/**
 * Created by a1 on 16/7/22.
 */
/**
 * Created by a1 on 16/7/22.
 */
!
    function(e, t) {
        function n(e) {
            return j.isWindow(e) ? e: e.nodeType === 9 ? e.defaultView || e.parentWindow: !1
        }
        function r(e) {
            if (!gn[e]) {
                var t = L.body,
                    n = j("<" + e + ">").appendTo(t),
                    r = n.css("display");
                n.remove();
                if (r === "none" || r === "") {
                    mn || (mn = L.createElement("iframe"), mn.frameBorder = mn.width = mn.height = 0),
                        t.appendChild(mn);
                    if (!vn || !mn.createElement) vn = (mn.contentWindow || mn.contentDocument).document,
                        vn.write((j.support.boxModel ? "<!doctype html>": "") + "<html><body>"),
                        vn.close();
                    n = vn.createElement(e),
                        vn.body.appendChild(n),
                        r = j.css(n, "display"),
                        t.removeChild(mn)
                }
                gn[e] = r
            }
            return gn[e]
        }
        function i(e, t) {
            var n = {};
            j.each(wn.concat.apply([], wn.slice(0, t)),
                function() {
                    n[this] = e
                });
            return n
        }
        function a() {
            Tn = t
        }
        function o() {
            setTimeout(a, 0);
            return Tn = j.now()
        }
        function s() {
            try {
                return new e.ActiveXObject("Microsoft.XMLHTTP")
            } catch(t) {}
        }
        function l() {
            try {
                return new e.XMLHttpRequest
            } catch(t) {}
        }
        function u(e, n) {
            e.dataFilter && (n = e.dataFilter(n, e.dataType));
            var r = e.dataTypes,
                i = {},
                a, o, s = r.length,
                l, u = r[0],
                c,
                f,
                d,
                p,
                h;
            for (a = 1; a < s; a++) {
                if (a === 1) for (o in e.converters) typeof o == "string" && (i[o.toLowerCase()] = e.converters[o]);
                c = u,
                    u = r[a];
                if (u === "*") u = c;
                else if (c !== "*" && c !== u) {
                    f = c + " " + u,
                        d = i[f] || i["* " + u];
                    if (!d) {
                        h = t;
                        for (p in i) {
                            l = p.split(" ");
                            if (l[0] === c || l[0] === "*") {
                                h = i[l[1] + " " + u];
                                if (h) {
                                    p = i[p],
                                        p === !0 ? d = h: h === !0 && (d = p);
                                    break
                                }
                            }
                        }
                    } ! d && !h && j.error("No conversion from " + f.replace(" ", " to ")),
                    d !== !0 && (n = d ? d(n) : h(p(n)))
                }
            }
            return n
        }
        function c(e, n, r) {
            var i = e.contents,
                a = e.dataTypes,
                o = e.responseFields,
                s, l, u, c;
            for (l in o) l in r && (n[o[l]] = r[l]);
            while (a[0] === "*") a.shift(),
            s === t && (s = e.mimeType || n.getResponseHeader("content-type"));
            if (s) for (l in i) if (i[l] && i[l].test(s)) {
                a.unshift(l);
                break
            }
            if (a[0] in r) u = a[0];
            else {
                for (l in r) {
                    if (!a[0] || e.converters[l + " " + a[0]]) {
                        u = l;
                        break
                    }
                    c || (c = l)
                }
                u = u || c
            }
            if (u) {
                u !== a[0] && a.unshift(u);
                return r[u]
            }
        }
        function f(e, t, n, r) {
            if (j.isArray(t)) j.each(t,
                function(t, i) {
                    n || Qt.test(e) ? r(e, i) : f(e + "[" + (typeof i == "object" ? t: "") + "]", i, n, r)
                });
            else if (!n && j.type(t) === "object") for (var i in t) f(e + "[" + i + "]", t[i], n, r);
            else r(e, t)
        }
        function d(e, n) {
            var r, i, a = j.ajaxSettings.flatOptions || {};
            for (r in n) n[r] !== t && ((a[r] ? e: i || (i = {}))[r] = n[r]);
            i && j.extend(!0, e, i)
        }
        function p(e, n, r, i, a, o) {
            a = a || n.dataTypes[0],
                o = o || {},
                o[a] = !0;
            var s = e[a],
                l = 0,
                u = s ? s.length: 0,
                c = e === rn,
                f;
            for (; l < u && (c || !f); l++) f = s[l](n, r, i),
            typeof f == "string" && (!c || o[f] ? f = t: (n.dataTypes.unshift(f), f = p(e, n, r, i, f, o))); (c || !f) && !o["*"] && (f = p(e, n, r, i, "*", o));
            return f
        }
        function h(e) {
            return function(t, n) {
                typeof t != "string" && (n = t, t = "*");
                if (j.isFunction(n)) {
                    var r = t.toLowerCase().split(Zt),
                        i = 0,
                        a = r.length,
                        o,
                        s,
                        l;
                    for (; i < a; i++) o = r[i],
                        l = /^\+/.test(o),
                    l && (o = o.substr(1) || "*"),
                        s = e[o] = e[o] || [],
                        s[l ? "unshift": "push"](n)
                }
            }
        }
        function g(e, t, n) {
            var r = t === "width" ? e.offsetWidth: e.offsetHeight,
                i = t === "width" ? 1 : 0,
                a = 4;
            if (r > 0) {
                if (n !== "border") for (; i < a; i += 2) n || (r -= parseFloat(j.css(e, "padding" + Ot[i])) || 0),
                    n === "margin" ? r += parseFloat(j.css(e, n + Ot[i])) || 0 : r -= parseFloat(j.css(e, "border" + Ot[i] + "Width")) || 0;
                return r + "px"
            }
            r = qt(e, t);
            if (r < 0 || r == null) r = e.style[t];
            if (Ft.test(r)) return r;
            r = parseFloat(r) || 0;
            if (n) for (; i < a; i += 2) r += parseFloat(j.css(e, "padding" + Ot[i])) || 0,
            n !== "padding" && (r += parseFloat(j.css(e, "border" + Ot[i] + "Width")) || 0),
            n === "margin" && (r += parseFloat(j.css(e, n + Ot[i])) || 0);
            return r + "px"
        }
        function m(e) {
            var t = L.createElement("div");
            At.appendChild(t),
                t.innerHTML = e.outerHTML;
            return t.firstChild
        }
        function v(e) {
            var t = (e.nodeName || "").toLowerCase();
            t === "input" ? y(e) : t !== "script" && typeof e.getElementsByTagName != "undefined" && j.grep(e.getElementsByTagName("input"), y)
        }
        function y(e) {
            if (e.type === "checkbox" || e.type === "radio") e.defaultChecked = e.checked
        }
        function b(e) {
            return typeof e.getElementsByTagName != "undefined" ? e.getElementsByTagName("*") : typeof e.querySelectorAll != "undefined" ? e.querySelectorAll("*") : []
        }
        function x(e, t) {
            var n;
            t.nodeType === 1 && (t.clearAttributes && t.clearAttributes(), t.mergeAttributes && t.mergeAttributes(e), n = t.nodeName.toLowerCase(), n === "object" ? t.outerHTML = e.outerHTML: n !== "input" || e.type !== "checkbox" && e.type !== "radio" ? n === "option" ? t.selected = e.defaultSelected: n === "input" || n === "textarea" ? t.defaultValue = e.defaultValue: n === "script" && t.text !== e.text && (t.text = e.text) : (e.checked && (t.defaultChecked = t.checked = e.checked), t.value !== e.value && (t.value = e.value)), t.removeAttribute(j.expando), t.removeAttribute("_submit_attached"), t.removeAttribute("_change_attached"))
        }
        function w(e, t) {
            if (t.nodeType === 1 && !!j.hasData(e)) {
                var n, r, i, a = j._data(e),
                    o = j._data(t, a),
                    s = a.events;
                if (s) {
                    delete o.handle,
                        o.events = {};
                    for (n in s) for (r = 0, i = s[n].length; r < i; r++) j.event.add(t, n, s[n][r])
                }
                o.data && (o.data = j.extend({},
                    o.data))
            }
        }
        function T(e, t) {
            return j.nodeName(e, "table") ? e.getElementsByTagName("tbody")[0] || e.appendChild(e.ownerDocument.createElement("tbody")) : e
        }
        function C(e) {
            var t = ht.split("|"),
                n = e.createDocumentFragment();
            if (n.createElement) while (t.length) n.createElement(t.pop());
            return n
        }
        function N(e, t, n) {
            t = t || 0;
            if (j.isFunction(t)) return j.grep(e,
                function(e, r) {
                    var i = !!t.call(e, r, e);
                    return i === n
                });
            if (t.nodeType) return j.grep(e,
                function(e, r) {
                    return e === t === n
                });
            if (typeof t == "string") {
                var r = j.grep(e,
                    function(e) {
                        return e.nodeType === 1
                    });
                if (ct.test(t)) return j.filter(t, r, !n);
                t = j.filter(t, r)
            }
            return j.grep(e,
                function(e, r) {
                    return j.inArray(e, t) >= 0 === n
                })
        }
        function E(e) {
            return ! e || !e.parentNode || e.parentNode.nodeType === 11
        }
        function k() {
            return ! 0
        }
        function S() {
            return ! 1
        }
        function A(e, t, n) {
            var r = t + "defer",
                i = t + "queue",
                a = t + "mark",
                o = j._data(e, r);
            o && (n === "queue" || !j._data(e, i)) && (n === "mark" || !j._data(e, a)) && setTimeout(function() { ! j._data(e, i) && !j._data(e, a) && (j.removeData(e, r, !0), o.fire())
                },
                0)
        }
        function _(e) {
            for (var t in e) {
                if (t === "data" && j.isEmptyObject(e[t])) continue;
                if (t !== "toJSON") return ! 1
            }
            return ! 0
        }
        function M(e, n, r) {
            if (r === t && e.nodeType === 1) {
                var i = "data-" + n.replace(B, "-$1").toLowerCase();
                r = e.getAttribute(i);
                if (typeof r == "string") {
                    try {
                        r = r === "true" ? !0 : r === "false" ? !1 : r === "null" ? null: j.isNumeric(r) ? +r: q.test(r) ? j.parseJSON(r) : r
                    } catch(a) {}
                    j.data(e, n, r)
                } else r = t
            }
            return r
        }
        function D(e) {
            var t = P[e] = {},
                n,
                r;
            e = e.split(/\s+/);
            for (n = 0, r = e.length; n < r; n++) t[e[n]] = !0;
            return t
        }
        var L = e.document,
            F = e.navigator,
            H = e.location,
            j = function() {
                function n() {
                    if (!r.isReady) {
                        try {
                            L.documentElement.doScroll("left")
                        } catch(e) {
                            setTimeout(n, 1);
                            return
                        }
                        r.ready()
                    }
                }
                var r = function(e, t) {
                        return new r.fn.init(e, t, o)
                    },
                    i = e.jQuery,
                    a = e.$,
                    o,
                    s = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
                    l = /\S/,
                    u = /^\s+/,
                    c = /\s+$/,
                    f = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
                    d = /^[\],:{}\s]*$/,
                    p = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
                    h = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
                    g = /(?:^|:|,)(?:\s*\[)+/g,
                    m = /(webkit)[ \/]([\w.]+)/,
                    v = /(opera)(?:.*version)?[ \/]([\w.]+)/,
                    y = /(msie) ([\w.]+)/,
                    b = /(mozilla)(?:.*? rv:([\w.]+))?/,
                    x = /-([a-z]|[0-9])/gi,
                    w = /^-ms-/,
                    T = function(e, t) {
                        return (t + "").toUpperCase()
                    },
                    C = F.userAgent,
                    N,
                    E,
                    k,
                    S = Object.prototype.toString,
                    A = Object.prototype.hasOwnProperty,
                    _ = Array.prototype.push,
                    M = Array.prototype.slice,
                    D = String.prototype.trim,
                    H = Array.prototype.indexOf,
                    j = {};
                r.fn = r.prototype = {
                    constructor: r,
                    init: function(e, n, i) {
                        var a, o, l, u;
                        if (!e) return this;
                        if (e.nodeType) {
                            this.context = this[0] = e,
                                this.length = 1;
                            return this
                        }
                        if (e === "body" && !n && L.body) {
                            this.context = L,
                                this[0] = L.body,
                                this.selector = e,
                                this.length = 1;
                            return this
                        }
                        if (typeof e == "string") {
                            e.charAt(0) !== "<" || e.charAt(e.length - 1) !== ">" || e.length < 3 ? a = s.exec(e) : a = [null, e, null];
                            if (a && (a[1] || !n)) {
                                if (a[1]) {
                                    n = n instanceof r ? n[0] : n,
                                        u = n ? n.ownerDocument || n: L,
                                        l = f.exec(e),
                                        l ? r.isPlainObject(n) ? (e = [L.createElement(l[1])], r.fn.attr.call(e, n, !0)) : e = [u.createElement(l[1])] : (l = r.buildFragment([a[1]], [u]), e = (l.cacheable ? r.clone(l.fragment) : l.fragment).childNodes);
                                    return r.merge(this, e)
                                }
                                o = L.getElementById(a[2]);
                                if (o && o.parentNode) {
                                    if (o.id !== a[2]) return i.find(e);
                                    this.length = 1,
                                        this[0] = o
                                }
                                this.context = L,
                                    this.selector = e;
                                return this
                            }
                            return ! n || n.jquery ? (n || i).find(e) : this.constructor(n).find(e)
                        }
                        if (r.isFunction(e)) return i.ready(e);
                        e.selector !== t && (this.selector = e.selector, this.context = e.context);
                        return r.makeArray(e, this)
                    },
                    selector: "",
                    jquery: "1.7.2",
                    length: 0,
                    size: function() {
                        return this.length
                    },
                    toArray: function() {
                        return M.call(this, 0)
                    },
                    get: function(e) {
                        return e == null ? this.toArray() : e < 0 ? this[this.length + e] : this[e]
                    },
                    pushStack: function(e, t, n) {
                        var i = this.constructor();
                        r.isArray(e) ? _.apply(i, e) : r.merge(i, e),
                            i.prevObject = this,
                            i.context = this.context,
                            t === "find" ? i.selector = this.selector + (this.selector ? " ": "") + n: t && (i.selector = this.selector + "." + t + "(" + n + ")");
                        return i
                    },
                    each: function(e, t) {
                        return r.each(this, e, t)
                    },
                    ready: function(e) {
                        r.bindReady(),
                            E.add(e);
                        return this
                    },
                    eq: function(e) {
                        e = +e;
                        return e === -1 ? this.slice(e) : this.slice(e, e + 1)
                    },
                    first: function() {
                        return this.eq(0)
                    },
                    last: function() {
                        return this.eq( - 1)
                    },
                    slice: function() {
                        return this.pushStack(M.apply(this, arguments), "slice", M.call(arguments).join(","))
                    },
                    map: function(e) {
                        return this.pushStack(r.map(this,
                            function(t, n) {
                                return e.call(t, n, t)
                            }))
                    },
                    end: function() {
                        return this.prevObject || this.constructor(null)
                    },
                    push: _,
                    sort: [].sort,
                    splice: [].splice
                },
                    r.fn.init.prototype = r.fn,
                    r.extend = r.fn.extend = function() {
                        var e, n, i, a, o, s, l = arguments[0] || {},
                            u = 1,
                            c = arguments.length,
                            f = !1;
                        typeof l == "boolean" && (f = l, l = arguments[1] || {},
                            u = 2),
                        typeof l != "object" && !r.isFunction(l) && (l = {}),
                        c === u && (l = this, --u);
                        for (; u < c; u++) if ((e = arguments[u]) != null) for (n in e) {
                            i = l[n],
                                a = e[n];
                            if (l === a) continue;
                            f && a && (r.isPlainObject(a) || (o = r.isArray(a))) ? (o ? (o = !1, s = i && r.isArray(i) ? i: []) : s = i && r.isPlainObject(i) ? i: {},
                                l[n] = r.extend(f, s, a)) : a !== t && (l[n] = a)
                        }
                        return l
                    },
                    r.extend({
                        noConflict: function(t) {
                            e.$ === r && (e.$ = a),
                            t && e.jQuery === r && (e.jQuery = i);
                            return r
                        },
                        isReady: !1,
                        readyWait: 1,
                        holdReady: function(e) {
                            e ? r.readyWait++:r.ready(!0)
                        },
                        ready: function(e) {
                            if (e === !0 && !--r.readyWait || e !== !0 && !r.isReady) {
                                if (!L.body) return setTimeout(r.ready, 1);
                                r.isReady = !0;
                                if (e !== !0 && --r.readyWait > 0) return;
                                E.fireWith(L, [r]),
                                r.fn.trigger && r(L).trigger("ready").off("ready")
                            }
                        },
                        bindReady: function() {
                            if (!E) {
                                E = r.Callbacks("once memory");
                                if (L.readyState === "complete") return setTimeout(r.ready, 1);
                                if (L.addEventListener) L.addEventListener("DOMContentLoaded", k, !1),
                                    e.addEventListener("load", r.ready, !1);
                                else if (L.attachEvent) {
                                    L.attachEvent("onreadystatechange", k),
                                        e.attachEvent("onload", r.ready);
                                    var t = !1;
                                    try {
                                        t = e.frameElement == null
                                    } catch(i) {}
                                    L.documentElement.doScroll && t && n()
                                }
                            }
                        },
                        isFunction: function(e) {
                            return r.type(e) === "function"
                        },
                        isArray: Array.isArray ||
                        function(e) {
                            return r.type(e) === "array"
                        },
                        isWindow: function(e) {
                            return e != null && e == e.window
                        },
                        isNumeric: function(e) {
                            return ! isNaN(parseFloat(e)) && isFinite(e)
                        },
                        type: function(e) {
                            return e == null ? String(e) : j[S.call(e)] || "object"
                        },
                        isPlainObject: function(e) {
                            if (!e || r.type(e) !== "object" || e.nodeType || r.isWindow(e)) return ! 1;
                            try {
                                if (e.constructor && !A.call(e, "constructor") && !A.call(e.constructor.prototype, "isPrototypeOf")) return ! 1
                            } catch(n) {
                                return ! 1
                            }
                            var i;
                            for (i in e);
                            return i === t || A.call(e, i)
                        },
                        isEmptyObject: function(e) {
                            for (var t in e) return ! 1;
                            return ! 0
                        },
                        error: function(e) {
                            throw new Error(e)
                        },
                        parseJSON: function(t) {
                            if (typeof t != "string" || !t) return null;
                            t = r.trim(t);
                            if (e.JSON && e.JSON.parse) return e.JSON.parse(t);
                            if (d.test(t.replace(p, "@").replace(h, "]").replace(g, ""))) return new Function("return " + t)();
                            r.error("Invalid JSON: " + t)
                        },
                        parseXML: function(n) {
                            if (typeof n != "string" || !n) return null;
                            var i, a;
                            try {
                                e.DOMParser ? (a = new DOMParser, i = a.parseFromString(n, "text/xml")) : (i = new ActiveXObject("Microsoft.XMLDOM"), i.async = "false", i.loadXML(n))
                            } catch(o) {
                                i = t
                            } (!i || !i.documentElement || i.getElementsByTagName("parsererror").length) && r.error("Invalid XML: " + n);
                            return i
                        },
                        noop: function() {},
                        globalEval: function(t) {
                            t && l.test(t) && (e.execScript ||
                            function(t) {
                                e.eval.call(e, t)
                            })(t)
                        },
                        camelCase: function(e) {
                            return e.replace(w, "ms-").replace(x, T)
                        },
                        nodeName: function(e, t) {
                            return e.nodeName && e.nodeName.toUpperCase() === t.toUpperCase()
                        },
                        each: function(e, n, i) {
                            var a, o = 0,
                                s = e.length,
                                l = s === t || r.isFunction(e);
                            if (i) {
                                if (l) {
                                    for (a in e) if (n.apply(e[a], i) === !1) break
                                } else for (; o < s;) if (n.apply(e[o++], i) === !1) break
                            } else if (l) {
                                for (a in e) if (n.call(e[a], a, e[a]) === !1) break
                            } else for (; o < s;) if (n.call(e[o], o, e[o++]) === !1) break;
                            return e
                        },
                        trim: D ?
                            function(e) {
                                return e == null ? "": D.call(e)
                            }: function(e) {
                            return e == null ? "": (e + "").replace(u, "").replace(c, "")
                        },
                        makeArray: function(e, t) {
                            var n = t || [];
                            if (e != null) {
                                var i = r.type(e);
                                e.length == null || i === "string" || i === "function" || i === "regexp" || r.isWindow(e) ? _.call(n, e) : r.merge(n, e)
                            }
                            return n
                        },
                        inArray: function(e, t, n) {
                            var r;
                            if (t) {
                                if (H) return H.call(t, e, n);
                                r = t.length,
                                    n = n ? n < 0 ? Math.max(0, r + n) : n: 0;
                                for (; n < r; n++) if (n in t && t[n] === e) return n
                            }
                            return - 1
                        },
                        merge: function(e, n) {
                            var r = e.length,
                                i = 0;
                            if (typeof n.length == "number") for (var a = n.length; i < a; i++) e[r++] = n[i];
                            else while (n[i] !== t) e[r++] = n[i++];
                            e.length = r;
                            return e
                        },
                        grep: function(e, t, n) {
                            var r = [],
                                i;
                            n = !!n;
                            for (var a = 0,
                                     o = e.length; a < o; a++) i = !!t(e[a], a),
                            n !== i && r.push(e[a]);
                            return r
                        },
                        map: function(e, n, i) {
                            var a, o, s = [],
                                l = 0,
                                u = e.length,
                                c = e instanceof r || u !== t && typeof u == "number" && (u > 0 && e[0] && e[u - 1] || u === 0 || r.isArray(e));
                            if (c) for (; l < u; l++) a = n(e[l], l, i),
                            a != null && (s[s.length] = a);
                            else for (o in e) a = n(e[o], o, i),
                            a != null && (s[s.length] = a);
                            return s.concat.apply([], s)
                        },
                        guid: 1,
                        proxy: function(e, n) {
                            if (typeof n == "string") {
                                var i = e[n];
                                n = e,
                                    e = i
                            }
                            if (!r.isFunction(e)) return t;
                            var a = M.call(arguments, 2),
                                o = function() {
                                    return e.apply(n, a.concat(M.call(arguments)))
                                };
                            o.guid = e.guid = e.guid || o.guid || r.guid++;
                            return o
                        },
                        access: function(e, n, i, a, o, s, l) {
                            var u, c = i == null,
                                f = 0,
                                d = e.length;
                            if (i && typeof i == "object") {
                                for (f in i) r.access(e, n, f, i[f], 1, s, a);
                                o = 1
                            } else if (a !== t) {
                                u = l === t && r.isFunction(a),
                                c && (u ? (u = n, n = function(e, t, n) {
                                    return u.call(r(e), n)
                                }) : (n.call(e, a), n = null));
                                if (n) for (; f < d; f++) n(e[f], i, u ? a.call(e[f], f, n(e[f], i)) : a, l);
                                o = 1
                            }
                            return o ? e: c ? n.call(e) : d ? n(e[0], i) : s
                        },
                        now: function() {
                            return (new Date).getTime()
                        },
                        uaMatch: function(e) {
                            e = e.toLowerCase();
                            var t = m.exec(e) || v.exec(e) || y.exec(e) || e.indexOf("compatible") < 0 && b.exec(e) || [];
                            return {
                                browser: t[1] || "",
                                version: t[2] || "0"
                            }
                        },
                        sub: function() {
                            function e(t, n) {
                                return new e.fn.init(t, n)
                            }
                            r.extend(!0, e, this),
                                e.superclass = this,
                                e.fn = e.prototype = this(),
                                e.fn.constructor = e,
                                e.sub = this.sub,
                                e.fn.init = function(n, i) {
                                    i && i instanceof r && !(i instanceof e) && (i = e(i));
                                    return r.fn.init.call(this, n, i, t)
                                },
                                e.fn.init.prototype = e.fn;
                            var t = e(L);
                            return e
                        },
                        browser: {}
                    }),
                    r.each("Boolean Number String Function Array Date RegExp Object".split(" "),
                        function(e, t) {
                            j["[object " + t + "]"] = t.toLowerCase()
                        }),
                    N = r.uaMatch(C),
                N.browser && (r.browser[N.browser] = !0, r.browser.version = N.version),
                r.browser.webkit && (r.browser.safari = !0),
                l.test("\xa0") && (u = /^[\s\xA0]+/, c = /[\s\xA0]+$/),
                    o = r(L),
                    L.addEventListener ? k = function() {
                        L.removeEventListener("DOMContentLoaded", k, !1),
                            r.ready()
                    }: L.attachEvent && (k = function() {
                        L.readyState === "complete" && (L.detachEvent("onreadystatechange", k), r.ready())
                    });
                return r
            } (),
            P = {};
        j.Callbacks = function(e) {
            e = e ? P[e] || D(e) : {};
            var n = [],
                r = [],
                i,
                a,
                o,
                s,
                l,
                u,
                c = function(t) {
                    var r, i, a, o, s;
                    for (r = 0, i = t.length; r < i; r++) a = t[r],
                        o = j.type(a),
                        o === "array" ? c(a) : o === "function" && (!e.unique || !d.has(a)) && n.push(a)
                },
                f = function(t, c) {
                    c = c || [],
                        i = !e.memory || [t, c],
                        a = !0,
                        o = !0,
                        u = s || 0,
                        s = 0,
                        l = n.length;
                    for (; n && u < l; u++) if (n[u].apply(t, c) === !1 && e.stopOnFalse) {
                        i = !0;
                        break
                    }
                    o = !1,
                    n && (e.once ? i === !0 ? d.disable() : n = [] : r && r.length && (i = r.shift(), d.fireWith(i[0], i[1])))
                },
                d = {
                    add: function() {
                        if (n) {
                            var e = n.length;
                            c(arguments),
                                o ? l = n.length: i && i !== !0 && (s = e, f(i[0], i[1]))
                        }
                        return this
                    },
                    remove: function() {
                        if (n) {
                            var t = arguments,
                                r = 0,
                                i = t.length;
                            for (; r < i; r++) for (var a = 0; a < n.length; a++) if (t[r] === n[a]) {
                                o && a <= l && (l--, a <= u && u--),
                                    n.splice(a--, 1);
                                if (e.unique) break
                            }
                        }
                        return this
                    },
                    has: function(e) {
                        if (n) {
                            var t = 0,
                                r = n.length;
                            for (; t < r; t++) if (e === n[t]) return ! 0
                        }
                        return ! 1
                    },
                    empty: function() {
                        n = [];
                        return this
                    },
                    disable: function() {
                        n = r = i = t;
                        return this
                    },
                    disabled: function() {
                        return ! n
                    },
                    lock: function() {
                        r = t,
                        (!i || i === !0) && d.disable();
                        return this
                    },
                    locked: function() {
                        return ! r
                    },
                    fireWith: function(t, n) {
                        r && (o ? e.once || r.push([t, n]) : (!e.once || !i) && f(t, n));
                        return this
                    },
                    fire: function() {
                        d.fireWith(this, arguments);
                        return this
                    },
                    fired: function() {
                        return !! a
                    }
                };
            return d
        };
        var O = [].slice;
        j.extend({
            Deferred: function(e) {
                var t = j.Callbacks("once memory"),
                    n = j.Callbacks("once memory"),
                    r = j.Callbacks("memory"),
                    i = "pending",
                    a = {
                        resolve: t,
                        reject: n,
                        notify: r
                    },
                    o = {
                        done: t.add,
                        fail: n.add,
                        progress: r.add,
                        state: function() {
                            return i
                        },
                        isResolved: t.fired,
                        isRejected: n.fired,
                        then: function(e, t, n) {
                            s.done(e).fail(t).progress(n);
                            return this
                        },
                        always: function() {
                            s.done.apply(s, arguments).fail.apply(s, arguments);
                            return this
                        },
                        pipe: function(e, t, n) {
                            return j.Deferred(function(r) {
                                j.each({
                                        done: [e, "resolve"],
                                        fail: [t, "reject"],
                                        progress: [n, "notify"]
                                    },
                                    function(e, t) {
                                        var n = t[0],
                                            i = t[1],
                                            a;
                                        j.isFunction(n) ? s[e](function() {
                                            a = n.apply(this, arguments),
                                                a && j.isFunction(a.promise) ? a.promise().then(r.resolve, r.reject, r.notify) : r[i + "With"](this === s ? r: this, [a])
                                        }) : s[e](r[i])
                                    })
                            }).promise()
                        },
                        promise: function(e) {
                            if (e == null) e = o;
                            else for (var t in o) e[t] = o[t];
                            return e
                        }
                    },
                    s = o.promise({}),
                    l;
                for (l in a) s[l] = a[l].fire,
                    s[l + "With"] = a[l].fireWith;
                s.done(function() {
                        i = "resolved"
                    },
                    n.disable, r.lock).fail(function() {
                        i = "rejected"
                    },
                    t.disable, r.lock),
                e && e.call(s, s);
                return s
            },
            when: function(e) {
                function t(e) {
                    return function(t) {
                        o[e] = arguments.length > 1 ? O.call(arguments, 0) : t,
                            u.notifyWith(c, o)
                    }
                }
                function n(e) {
                    return function(t) {
                        r[e] = arguments.length > 1 ? O.call(arguments, 0) : t,
                        --s || u.resolveWith(u, r)
                    }
                }
                var r = O.call(arguments, 0),
                    i = 0,
                    a = r.length,
                    o = Array(a),
                    s = a,
                    l = a,
                    u = a <= 1 && e && j.isFunction(e.promise) ? e: j.Deferred(),
                    c = u.promise();
                if (a > 1) {
                    for (; i < a; i++) r[i] && r[i].promise && j.isFunction(r[i].promise) ? r[i].promise().then(n(i), u.reject, t(i)) : --s;
                    s || u.resolveWith(u, r)
                } else u !== e && u.resolveWith(u, a ? [e] : []);
                return c
            }
        }),
            j.support = function() {
                var t, n, r, i, a, o, s, l, u, c, f, d, p = L.createElement("div"),
                    h = L.documentElement;
                p.setAttribute("className", "t"),
                    p.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",
                    n = p.getElementsByTagName("*"),
                    r = p.getElementsByTagName("a")[0];
                if (!n || !n.length || !r) return {};
                i = L.createElement("select"),
                    a = i.appendChild(L.createElement("option")),
                    o = p.getElementsByTagName("input")[0],
                    t = {
                        leadingWhitespace: p.firstChild.nodeType === 3,
                        tbody: !p.getElementsByTagName("tbody").length,
                        htmlSerialize: !!p.getElementsByTagName("link").length,
                        style: /top/.test(r.getAttribute("style")),
                        hrefNormalized: r.getAttribute("href") === "/a",
                        opacity: /^0.55/.test(r.style.opacity),
                        cssFloat: !!r.style.cssFloat,
                        checkOn: o.value === "on",
                        optSelected: a.selected,
                        getSetAttribute: p.className !== "t",
                        enctype: !!L.createElement("form").enctype,
                        html5Clone: L.createElement("nav").cloneNode(!0).outerHTML !== "<:nav></:nav>",
                        submitBubbles: !0,
                        changeBubbles: !0,
                        focusinBubbles: !1,
                        deleteExpando: !0,
                        noCloneEvent: !0,
                        inlineBlockNeedsLayout: !1,
                        shrinkWrapBlocks: !1,
                        reliableMarginRight: !0,
                        pixelMargin: !0
                    },
                    j.boxModel = t.boxModel = L.compatMode === "CSS1Compat",
                    o.checked = !0,
                    t.noCloneChecked = o.cloneNode(!0).checked,
                    i.disabled = !0,
                    t.optDisabled = !a.disabled;
                try {
                    delete p.test
                } catch(g) {
                    t.deleteExpando = !1
                } ! p.addEventListener && p.attachEvent && p.fireEvent && (p.attachEvent("onclick",
                    function() {
                        t.noCloneEvent = !1
                    }), p.cloneNode(!0).fireEvent("onclick")),
                    o = L.createElement("input"),
                    o.value = "t",
                    o.setAttribute("type", "radio"),
                    t.radioValue = o.value === "t",
                    o.setAttribute("checked", "checked"),
                    o.setAttribute("name", "t"),
                    p.appendChild(o),
                    s = L.createDocumentFragment(),
                    s.appendChild(p.lastChild),
                    t.checkClone = s.cloneNode(!0).cloneNode(!0).lastChild.checked,
                    t.appendChecked = o.checked,
                    s.removeChild(o),
                    s.appendChild(p);
                if (p.attachEvent) for (f in {
                    submit: 1,
                    change: 1,
                    focusin: 1
                }) c = "on" + f,
                    d = c in p,
                d || (p.setAttribute(c, "return;"), d = typeof p[c] == "function"),
                    t[f + "Bubbles"] = d;
                s.removeChild(p),
                    s = i = a = p = o = null,
                    j(function() {
                        var n, r, i, a, o, s, u, c, f, h, g, m, v, y = L.getElementsByTagName("body")[0]; ! y || (c = 1, v = "padding:0;margin:0;border:", g = "position:absolute;top:0;left:0;width:1px;height:1px;", m = v + "0;visibility:hidden;", f = "style='" + g + v + "5px solid #000;", h = "<div " + f + "display:block;'><div style='" + v + "0;display:block;overflow:hidden;'></div></div>" + "<table " + f + "' cellpadding='0' cellspacing='0'>" + "<tr><td></td></tr></table>", n = L.createElement("div"), n.style.cssText = m + "width:0;height:0;position:static;top:0;margin-top:" + c + "px", y.insertBefore(n, y.firstChild), p = L.createElement("div"), n.appendChild(p), p.innerHTML = "<table><tr><td style='" + v + "0;display:none'></td><td>t</td></tr></table>", l = p.getElementsByTagName("td"), d = l[0].offsetHeight === 0, l[0].style.display = "", l[1].style.display = "none", t.reliableHiddenOffsets = d && l[0].offsetHeight === 0, e.getComputedStyle && (p.innerHTML = "", u = L.createElement("div"), u.style.width = "0", u.style.marginRight = "0", p.style.width = "2px", p.appendChild(u), t.reliableMarginRight = (parseInt((e.getComputedStyle(u, null) || {
                                marginRight: 0
                            }).marginRight, 10) || 0) === 0), typeof p.style.zoom != "undefined" && (p.innerHTML = "", p.style.width = p.style.padding = "1px", p.style.border = 0, p.style.overflow = "hidden", p.style.display = "inline", p.style.zoom = 1, t.inlineBlockNeedsLayout = p.offsetWidth === 3, p.style.display = "block", p.style.overflow = "visible", p.innerHTML = "<div style='width:5px;'></div>", t.shrinkWrapBlocks = p.offsetWidth !== 3), p.style.cssText = g + m, p.innerHTML = h, r = p.firstChild, i = r.firstChild, o = r.nextSibling.firstChild.firstChild, s = {
                            doesNotAddBorder: i.offsetTop !== 5,
                            doesAddBorderForTableAndCells: o.offsetTop === 5
                        },
                            i.style.position = "fixed", i.style.top = "20px", s.fixedPosition = i.offsetTop === 20 || i.offsetTop === 15, i.style.position = i.style.top = "", r.style.overflow = "hidden", r.style.position = "relative", s.subtractsBorderForOverflowNotVisible = i.offsetTop === -5, s.doesNotIncludeMarginInBodyOffset = y.offsetTop !== c, e.getComputedStyle && (p.style.marginTop = "1%", t.pixelMargin = (e.getComputedStyle(p, null) || {
                                marginTop: 0
                            }).marginTop !== "1%"), typeof n.style.zoom != "undefined" && (n.style.zoom = 1), y.removeChild(n), u = p = n = null, j.extend(t, s))
                    });
                return t
            } ();
        var q = /^(?:\{.*\}|\[.*\])$/,
            B = /([A-Z])/g;
        j.extend({
            cache: {},
            uuid: 0,
            expando: "jQuery" + (j.fn.jquery + Math.random()).replace(/\D/g, ""),
            noData: {
                embed: !0,
                object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
                applet: !0
            },
            hasData: function(e) {
                e = e.nodeType ? j.cache[e[j.expando]] : e[j.expando];
                return !! e && !_(e)
            },
            data: function(e, n, r, i) {
                if ( !! j.acceptData(e)) {
                    var a, o, s, l = j.expando,
                        u = typeof n == "string",
                        c = e.nodeType,
                        f = c ? j.cache: e,
                        d = c ? e[l] : e[l] && l,
                        p = n === "events";
                    if ((!d || !f[d] || !p && !i && !f[d].data) && u && r === t) return;
                    d || (c ? e[l] = d = ++j.uuid: d = l),
                    f[d] || (f[d] = {},
                    c || (f[d].toJSON = j.noop));
                    if (typeof n == "object" || typeof n == "function") i ? f[d] = j.extend(f[d], n) : f[d].data = j.extend(f[d].data, n);
                    a = o = f[d],
                    i || (o.data || (o.data = {}), o = o.data),
                    r !== t && (o[j.camelCase(n)] = r);
                    if (p && !o[n]) return a.events;
                    u ? (s = o[n], s == null && (s = o[j.camelCase(n)])) : s = o;
                    return s
                }
            },
            removeData: function(e, t, n) {
                if ( !! j.acceptData(e)) {
                    var r, i, a, o = j.expando,
                        s = e.nodeType,
                        l = s ? j.cache: e,
                        u = s ? e[o] : o;
                    if (!l[u]) return;
                    if (t) {
                        r = n ? l[u] : l[u].data;
                        if (r) {
                            j.isArray(t) || (t in r ? t = [t] : (t = j.camelCase(t), t in r ? t = [t] : t = t.split(" ")));
                            for (i = 0, a = t.length; i < a; i++) delete r[t[i]];
                            if (! (n ? _: j.isEmptyObject)(r)) return
                        }
                    }
                    if (!n) {
                        delete l[u].data;
                        if (!_(l[u])) return
                    }
                    j.support.deleteExpando || !l.setInterval ? delete l[u] : l[u] = null,
                    s && (j.support.deleteExpando ? delete e[o] : e.removeAttribute ? e.removeAttribute(o) : e[o] = null)
                }
            },
            _data: function(e, t, n) {
                return j.data(e, t, n, !0)
            },
            acceptData: function(e) {
                if (e.nodeName) {
                    var t = j.noData[e.nodeName.toLowerCase()];
                    if (t) return t !== !0 && e.getAttribute("classid") === t
                }
                return ! 0
            }
        }),
            j.fn.extend({
                data: function(e, n) {
                    var r, i, a, o, s, l = this[0],
                        u = 0,
                        c = null;
                    if (e === t) {
                        if (this.length) {
                            c = j.data(l);
                            if (l.nodeType === 1 && !j._data(l, "parsedAttrs")) {
                                a = l.attributes;
                                for (s = a.length; u < s; u++) o = a[u].name,
                                o.indexOf("data-") === 0 && (o = j.camelCase(o.substring(5)), M(l, o, c[o]));
                                j._data(l, "parsedAttrs", !0)
                            }
                        }
                        return c
                    }
                    if (typeof e == "object") return this.each(function() {
                        j.data(this, e)
                    });
                    r = e.split(".", 2),
                        r[1] = r[1] ? "." + r[1] : "",
                        i = r[1] + "!";
                    return j.access(this,
                        function(n) {
                            if (n === t) {
                                c = this.triggerHandler("getData" + i, [r[0]]),
                                c === t && l && (c = j.data(l, e), c = M(l, e, c));
                                return c === t && r[1] ? this.data(r[0]) : c
                            }
                            r[1] = n,
                                this.each(function() {
                                    var t = j(this);
                                    t.triggerHandler("setData" + i, r),
                                        j.data(this, e, n),
                                        t.triggerHandler("changeData" + i, r)
                                })
                        },
                        null, n, arguments.length > 1, null, !1)
                },
                removeData: function(e) {
                    return this.each(function() {
                        j.removeData(this, e)
                    })
                }
            }),
            j.extend({
                _mark: function(e, t) {
                    e && (t = (t || "fx") + "mark", j._data(e, t, (j._data(e, t) || 0) + 1))
                },
                _unmark: function(e, t, n) {
                    e !== !0 && (n = t, t = e, e = !1);
                    if (t) {
                        n = n || "fx";
                        var r = n + "mark",
                            i = e ? 0 : (j._data(t, r) || 1) - 1;
                        i ? j._data(t, r, i) : (j.removeData(t, r, !0), A(t, n, "mark"))
                    }
                },
                queue: function(e, t, n) {
                    var r;
                    if (e) {
                        t = (t || "fx") + "queue",
                            r = j._data(e, t),
                        n && (!r || j.isArray(n) ? r = j._data(e, t, j.makeArray(n)) : r.push(n));
                        return r || []
                    }
                },
                dequeue: function(e, t) {
                    t = t || "fx";
                    var n = j.queue(e, t),
                        r = n.shift(),
                        i = {};
                    r === "inprogress" && (r = n.shift()),
                    r && (t === "fx" && n.unshift("inprogress"), j._data(e, t + ".run", i), r.call(e,
                        function() {
                            j.dequeue(e, t)
                        },
                        i)),
                    n.length || (j.removeData(e, t + "queue " + t + ".run", !0), A(e, t, "queue"))
                }
            }),
            j.fn.extend({
                queue: function(e, n) {
                    var r = 2;
                    typeof e != "string" && (n = e, e = "fx", r--);
                    if (arguments.length < r) return j.queue(this[0], e);
                    return n === t ? this: this.each(function() {
                        var t = j.queue(this, e, n);
                        e === "fx" && t[0] !== "inprogress" && j.dequeue(this, e)
                    })
                },
                dequeue: function(e) {
                    return this.each(function() {
                        j.dequeue(this, e)
                    })
                },
                delay: function(e, t) {
                    e = j.fx ? j.fx.speeds[e] || e: e,
                        t = t || "fx";
                    return this.queue(t,
                        function(t, n) {
                            var r = setTimeout(t, e);
                            n.stop = function() {
                                clearTimeout(r)
                            }
                        })
                },
                clearQueue: function(e) {
                    return this.queue(e || "fx", [])
                },
                promise: function(e, n) {
                    function r() {--s || i.resolveWith(a, [a])
                    }
                    typeof e != "string" && (n = e, e = t),
                        e = e || "fx";
                    var i = j.Deferred(),
                        a = this,
                        o = a.length,
                        s = 1,
                        l = e + "defer",
                        u = e + "queue",
                        c = e + "mark",
                        f;
                    while (o--) if (f = j.data(a[o], l, t, !0) || (j.data(a[o], u, t, !0) || j.data(a[o], c, t, !0)) && j.data(a[o], l, j.Callbacks("once memory"), !0)) s++,
                        f.add(r);
                    r();
                    return i.promise(n)
                }
            });
        var R = /[\n\t\r]/g,
            I = /\s+/,
            Q = /\r/g,
            W = /^(?:button|input)$/i,
            $ = /^(?:button|input|object|select|textarea)$/i,
            X = /^a(?:rea)?$/i,
            V = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
            z = j.support.getSetAttribute,
            U, G, J;
        j.fn.extend({
            attr: function(e, t) {
                return j.access(this, j.attr, e, t, arguments.length > 1)
            },
            removeAttr: function(e) {
                return this.each(function() {
                    j.removeAttr(this, e)
                })
            },
            prop: function(e, t) {
                return j.access(this, j.prop, e, t, arguments.length > 1)
            },
            removeProp: function(e) {
                e = j.propFix[e] || e;
                return this.each(function() {
                    try {
                        this[e] = t,
                            delete this[e]
                    } catch(n) {}
                })
            },
            addClass: function(e) {
                var t, n, r, i, a, o, s;
                if (j.isFunction(e)) return this.each(function(t) {
                    j(this).addClass(e.call(this, t, this.className))
                });
                if (e && typeof e == "string") {
                    t = e.split(I);
                    for (n = 0, r = this.length; n < r; n++) {
                        i = this[n];
                        if (i.nodeType === 1) if (!i.className && t.length === 1) i.className = e;
                        else {
                            a = " " + i.className + " ";
                            for (o = 0, s = t.length; o < s; o++)~a.indexOf(" " + t[o] + " ") || (a += t[o] + " ");
                            i.className = j.trim(a)
                        }
                    }
                }
                return this
            },
            removeClass: function(e) {
                var n, r, i, a, o, s, l;
                if (j.isFunction(e)) return this.each(function(t) {
                    j(this).removeClass(e.call(this, t, this.className))
                });
                if (e && typeof e == "string" || e === t) {
                    n = (e || "").split(I);
                    for (r = 0, i = this.length; r < i; r++) {
                        a = this[r];
                        if (a.nodeType === 1 && a.className) if (e) {
                            o = (" " + a.className + " ").replace(R, " ");
                            for (s = 0, l = n.length; s < l; s++) o = o.replace(" " + n[s] + " ", " ");
                            a.className = j.trim(o)
                        } else a.className = ""
                    }
                }
                return this
            },
            toggleClass: function(e, t) {
                var n = typeof e,
                    r = typeof t == "boolean";
                if (j.isFunction(e)) return this.each(function(n) {
                    j(this).toggleClass(e.call(this, n, this.className, t), t)
                });
                return this.each(function() {
                    if (n === "string") {
                        var i, a = 0,
                            o = j(this),
                            s = t,
                            l = e.split(I);
                        while (i = l[a++]) s = r ? s: !o.hasClass(i),
                            o[s ? "addClass": "removeClass"](i)
                    } else if (n === "undefined" || n === "boolean") this.className && j._data(this, "__className__", this.className),
                        this.className = this.className || e === !1 ? "": j._data(this, "__className__") || ""
                })
            },
            hasClass: function(e) {
                var t = " " + e + " ",
                    n = 0,
                    r = this.length;
                for (; n < r; n++) if (this[n].nodeType === 1 && (" " + this[n].className + " ").replace(R, " ").indexOf(t) > -1) return ! 0;
                return ! 1
            },
            val: function(e) {
                var n, r, i, a = this[0]; {
                    if ( !! arguments.length) {
                        i = j.isFunction(e);
                        return this.each(function(r) {
                            var a = j(this),
                                o;
                            if (this.nodeType === 1) {
                                i ? o = e.call(this, r, a.val()) : o = e,
                                    o == null ? o = "": typeof o == "number" ? o += "": j.isArray(o) && (o = j.map(o,
                                        function(e) {
                                            return e == null ? "": e + ""
                                        })),
                                    n = j.valHooks[this.type] || j.valHooks[this.nodeName.toLowerCase()];
                                if (!n || !("set" in n) || n.set(this, o, "value") === t) this.value = o
                            }
                        })
                    }
                    if (a) {
                        n = j.valHooks[a.type] || j.valHooks[a.nodeName.toLowerCase()];
                        if (n && "get" in n && (r = n.get(a, "value")) !== t) return r;
                        r = a.value;
                        return typeof r == "string" ? r.replace(Q, "") : r == null ? "": r
                    }
                }
            }
        }),
            j.extend({
                valHooks: {
                    option: {
                        get: function(e) {
                            var t = e.attributes.value;
                            return ! t || t.specified ? e.value: e.text
                        }
                    },
                    select: {
                        get: function(e) {
                            var t, n, r, i, a = e.selectedIndex,
                                o = [],
                                s = e.options,
                                l = e.type === "select-one";
                            if (a < 0) return null;
                            n = l ? a: 0,
                                r = l ? a + 1 : s.length;
                            for (; n < r; n++) {
                                i = s[n];
                                if (i.selected && (j.support.optDisabled ? !i.disabled: i.getAttribute("disabled") === null) && (!i.parentNode.disabled || !j.nodeName(i.parentNode, "optgroup"))) {
                                    t = j(i).val();
                                    if (l) return t;
                                    o.push(t)
                                }
                            }
                            if (l && !o.length && s.length) return j(s[a]).val();
                            return o
                        },
                        set: function(e, t) {
                            var n = j.makeArray(t);
                            j(e).find("option").each(function() {
                                this.selected = j.inArray(j(this).val(), n) >= 0
                            }),
                            n.length || (e.selectedIndex = -1);
                            return n
                        }
                    }
                },
                attrFn: {
                    val: !0,
                    css: !0,
                    html: !0,
                    text: !0,
                    data: !0,
                    width: !0,
                    height: !0,
                    offset: !0
                },
                attr: function(e, n, r, i) {
                    var a, o, s, l = e.nodeType;
                    if ( !! e && l !== 3 && l !== 8 && l !== 2) {
                        if (i && n in j.attrFn) return j(e)[n](r);
                        if (typeof e.getAttribute == "undefined") return j.prop(e, n, r);
                        s = l !== 1 || !j.isXMLDoc(e),
                        s && (n = n.toLowerCase(), o = j.attrHooks[n] || (V.test(n) ? G: U));
                        if (r !== t) {
                            if (r === null) {
                                j.removeAttr(e, n);
                                return
                            }
                            if (o && "set" in o && s && (a = o.set(e, r, n)) !== t) return a;
                            e.setAttribute(n, "" + r);
                            return r
                        }
                        if (o && "get" in o && s && (a = o.get(e, n)) !== null) return a;
                        a = e.getAttribute(n);
                        return a === null ? t: a
                    }
                },
                removeAttr: function(e, t) {
                    var n, r, i, a, o, s = 0;
                    if (t && e.nodeType === 1) {
                        r = t.toLowerCase().split(I),
                            a = r.length;
                        for (; s < a; s++) i = r[s],
                        i && (n = j.propFix[i] || i, o = V.test(i), o || j.attr(e, i, ""), e.removeAttribute(z ? i: n), o && n in e && (e[n] = !1))
                    }
                },
                attrHooks: {
                    type: {
                        set: function(e, t) {
                            if (W.test(e.nodeName) && e.parentNode) j.error("type property can't be changed");
                            else if (!j.support.radioValue && t === "radio" && j.nodeName(e, "input")) {
                                var n = e.value;
                                e.setAttribute("type", t),
                                n && (e.value = n);
                                return t
                            }
                        }
                    },
                    value: {
                        get: function(e, t) {
                            if (U && j.nodeName(e, "button")) return U.get(e, t);
                            return t in e ? e.value: null
                        },
                        set: function(e, t, n) {
                            if (U && j.nodeName(e, "button")) return U.set(e, t, n);
                            e.value = t
                        }
                    }
                },
                propFix: {
                    tabindex: "tabIndex",
                    readonly: "readOnly",
                    "for": "htmlFor",
                    "class": "className",
                    maxlength: "maxLength",
                    cellspacing: "cellSpacing",
                    cellpadding: "cellPadding",
                    rowspan: "rowSpan",
                    colspan: "colSpan",
                    usemap: "useMap",
                    frameborder: "frameBorder",
                    contenteditable: "contentEditable"
                },
                prop: function(e, n, r) {
                    var i, a, o, s = e.nodeType;
                    if ( !! e && s !== 3 && s !== 8 && s !== 2) {
                        o = s !== 1 || !j.isXMLDoc(e),
                        o && (n = j.propFix[n] || n, a = j.propHooks[n]);
                        return r !== t ? a && "set" in a && (i = a.set(e, r, n)) !== t ? i: e[n] = r: a && "get" in a && (i = a.get(e, n)) !== null ? i: e[n]
                    }
                },
                propHooks: {
                    tabIndex: {
                        get: function(e) {
                            var n = e.getAttributeNode("tabindex");
                            return n && n.specified ? parseInt(n.value, 10) : $.test(e.nodeName) || X.test(e.nodeName) && e.href ? 0 : t
                        }
                    }
                }
            }),
            j.attrHooks.tabindex = j.propHooks.tabIndex,
            G = {
                get: function(e, n) {
                    var r, i = j.prop(e, n);
                    return i === !0 || typeof i != "boolean" && (r = e.getAttributeNode(n)) && r.nodeValue !== !1 ? n.toLowerCase() : t
                },
                set: function(e, t, n) {
                    var r;
                    t === !1 ? j.removeAttr(e, n) : (r = j.propFix[n] || n, r in e && (e[r] = !0), e.setAttribute(n, n.toLowerCase()));
                    return n
                }
            },
        z || (J = {
            name: !0,
            id: !0,
            coords: !0
        },
            U = j.valHooks.button = {
                get: function(e, n) {
                    var r;
                    r = e.getAttributeNode(n);
                    return r && (J[n] ? r.nodeValue !== "": r.specified) ? r.nodeValue: t
                },
                set: function(e, t, n) {
                    var r = e.getAttributeNode(n);
                    r || (r = L.createAttribute(n), e.setAttributeNode(r));
                    return r.nodeValue = t + ""
                }
            },
            j.attrHooks.tabindex.set = U.set, j.each(["width", "height"],
            function(e, t) {
                j.attrHooks[t] = j.extend(j.attrHooks[t], {
                    set: function(e, n) {
                        if (n === "") {
                            e.setAttribute(t, "auto");
                            return n
                        }
                    }
                })
            }), j.attrHooks.contenteditable = {
            get: U.get,
            set: function(e, t, n) {
                t === "" && (t = "false"),
                    U.set(e, t, n)
            }
        }),
        j.support.hrefNormalized || j.each(["href", "src", "width", "height"],
            function(e, n) {
                j.attrHooks[n] = j.extend(j.attrHooks[n], {
                    get: function(e) {
                        var r = e.getAttribute(n, 2);
                        return r === null ? t: r
                    }
                })
            }),
        j.support.style || (j.attrHooks.style = {
            get: function(e) {
                return e.style.cssText.toLowerCase() || t
            },
            set: function(e, t) {
                return e.style.cssText = "" + t
            }
        }),
        j.support.optSelected || (j.propHooks.selected = j.extend(j.propHooks.selected, {
            get: function(e) {
                var t = e.parentNode;
                t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex);
                return null
            }
        })),
        j.support.enctype || (j.propFix.enctype = "encoding"),
        j.support.checkOn || j.each(["radio", "checkbox"],
            function() {
                j.valHooks[this] = {
                    get: function(e) {
                        return e.getAttribute("value") === null ? "on": e.value
                    }
                }
            }),
            j.each(["radio", "checkbox"],
                function() {
                    j.valHooks[this] = j.extend(j.valHooks[this], {
                        set: function(e, t) {
                            if (j.isArray(t)) return e.checked = j.inArray(j(e).val(), t) >= 0
                        }
                    })
                });
        var Y = /^(?:textarea|input|select)$/i,
            K = /^([^\.]*)?(?:\.(.+))?$/,
            Z = /(?:^|\s)hover(\.\S+)?\b/,
            et = /^key/,
            tt = /^(?:mouse|contextmenu)|click/,
            nt = /^(?:focusinfocus|focusoutblur)$/,
            rt = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
            it = function(e) {
                var t = rt.exec(e);
                t && (t[1] = (t[1] || "").toLowerCase(), t[3] = t[3] && new RegExp("(?:^|\\s)" + t[3] + "(?:\\s|$)"));
                return t
            },
            at = function(e, t) {
                var n = e.attributes || {};
                return (!t[1] || e.nodeName.toLowerCase() === t[1]) && (!t[2] || (n.id || {}).value === t[2]) && (!t[3] || t[3].test((n["class"] || {}).value))
            },
            ot = function(e) {
                return j.event.special.hover ? e: e.replace(Z, "mouseenter$1 mouseleave$1")
            };
        j.event = {
            add: function(e, n, r, i, a) {
                var o, s, l, u, c, f, d, p, h, g, m, v;
                if (! (e.nodeType === 3 || e.nodeType === 8 || !n || !r || !(o = j._data(e)))) {
                    r.handler && (h = r, r = h.handler, a = h.selector),
                    r.guid || (r.guid = j.guid++),
                        l = o.events,
                    l || (o.events = l = {}),
                        s = o.handle,
                    s || (o.handle = s = function(e) {
                        return typeof j != "undefined" && (!e || j.event.triggered !== e.type) ? j.event.dispatch.apply(s.elem, arguments) : t
                    },
                        s.elem = e),
                        n = j.trim(ot(n)).split(" ");
                    for (u = 0; u < n.length; u++) {
                        c = K.exec(n[u]) || [],
                            f = c[1],
                            d = (c[2] || "").split(".").sort(),
                            v = j.event.special[f] || {},
                            f = (a ? v.delegateType: v.bindType) || f,
                            v = j.event.special[f] || {},
                            p = j.extend({
                                    type: f,
                                    origType: c[1],
                                    data: i,
                                    handler: r,
                                    guid: r.guid,
                                    selector: a,
                                    quick: a && it(a),
                                    namespace: d.join(".")
                                },
                                h),
                            m = l[f];
                        if (!m) {
                            m = l[f] = [],
                                m.delegateCount = 0;
                            if (!v.setup || v.setup.call(e, i, d, s) === !1) e.addEventListener ? e.addEventListener(f, s, !1) : e.attachEvent && e.attachEvent("on" + f, s)
                        }
                        v.add && (v.add.call(e, p), p.handler.guid || (p.handler.guid = r.guid)),
                            a ? m.splice(m.delegateCount++, 0, p) : m.push(p),
                            j.event.global[f] = !0
                    }
                    e = null
                }
            },
            global: {},
            remove: function(e, t, n, r, i) {
                var a = j.hasData(e) && j._data(e),
                    o,
                    s,
                    l,
                    u,
                    c,
                    f,
                    d,
                    p,
                    h,
                    g,
                    m,
                    v;
                if ( !! a && !!(p = a.events)) {
                    t = j.trim(ot(t || "")).split(" ");
                    for (o = 0; o < t.length; o++) {
                        s = K.exec(t[o]) || [],
                            l = u = s[1],
                            c = s[2];
                        if (!l) {
                            for (l in p) j.event.remove(e, l + t[o], n, r, !0);
                            continue
                        }
                        h = j.event.special[l] || {},
                            l = (r ? h.delegateType: h.bindType) || l,
                            m = p[l] || [],
                            f = m.length,
                            c = c ? new RegExp("(^|\\.)" + c.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
                        for (d = 0; d < m.length; d++) v = m[d],
                        (i || u === v.origType) && (!n || n.guid === v.guid) && (!c || c.test(v.namespace)) && (!r || r === v.selector || r === "**" && v.selector) && (m.splice(d--, 1), v.selector && m.delegateCount--, h.remove && h.remove.call(e, v));
                        m.length === 0 && f !== m.length && ((!h.teardown || h.teardown.call(e, c) === !1) && j.removeEvent(e, l, a.handle), delete p[l])
                    }
                    j.isEmptyObject(p) && (g = a.handle, g && (g.elem = null), j.removeData(e, ["events", "handle"], !0))
                }
            },
            customEvent: {
                getData: !0,
                setData: !0,
                changeData: !0
            },
            trigger: function(n, r, i, a) {
                if (!i || i.nodeType !== 3 && i.nodeType !== 8) {
                    var o = n.type || n,
                        s = [],
                        l,
                        u,
                        c,
                        f,
                        d,
                        p,
                        h,
                        g,
                        m,
                        v;
                    if (nt.test(o + j.event.triggered)) return;
                    o.indexOf("!") >= 0 && (o = o.slice(0, -1), u = !0),
                    o.indexOf(".") >= 0 && (s = o.split("."), o = s.shift(), s.sort());
                    if ((!i || j.event.customEvent[o]) && !j.event.global[o]) return;
                    n = typeof n == "object" ? n[j.expando] ? n: new j.Event(o, n) : new j.Event(o),
                        n.type = o,
                        n.isTrigger = !0,
                        n.exclusive = u,
                        n.namespace = s.join("."),
                        n.namespace_re = n.namespace ? new RegExp("(^|\\.)" + s.join("\\.(?:.*\\.)?") + "(\\.|$)") : null,
                        p = o.indexOf(":") < 0 ? "on" + o: "";
                    if (!i) {
                        l = j.cache;
                        for (c in l) l[c].events && l[c].events[o] && j.event.trigger(n, r, l[c].handle.elem, !0);
                        return
                    }
                    n.result = t,
                    n.target || (n.target = i),
                        r = r != null ? j.makeArray(r) : [],
                        r.unshift(n),
                        h = j.event.special[o] || {};
                    if (h.trigger && h.trigger.apply(i, r) === !1) return;
                    m = [[i, h.bindType || o]];
                    if (!a && !h.noBubble && !j.isWindow(i)) {
                        v = h.delegateType || o,
                            f = nt.test(v + o) ? i: i.parentNode,
                            d = null;
                        for (; f; f = f.parentNode) m.push([f, v]),
                            d = f;
                        d && d === i.ownerDocument && m.push([d.defaultView || d.parentWindow || e, v])
                    }
                    for (c = 0; c < m.length && !n.isPropagationStopped(); c++) f = m[c][0],
                        n.type = m[c][1],
                        g = (j._data(f, "events") || {})[n.type] && j._data(f, "handle"),
                    g && g.apply(f, r),
                        g = p && f[p],
                    g && j.acceptData(f) && g.apply(f, r) === !1 && n.preventDefault();
                    n.type = o,
                    !a && !n.isDefaultPrevented() && (!h._default || h._default.apply(i.ownerDocument, r) === !1) && (o !== "click" || !j.nodeName(i, "a")) && j.acceptData(i) && p && i[o] && (o !== "focus" && o !== "blur" || n.target.offsetWidth !== 0) && !j.isWindow(i) && (d = i[p], d && (i[p] = null), j.event.triggered = o, i[o](), j.event.triggered = t, d && (i[p] = d));
                    return n.result
                }
            },
            dispatch: function(n) {
                n = j.event.fix(n || e.event);
                var r = (j._data(this, "events") || {})[n.type] || [],
                    i = r.delegateCount,
                    a = [].slice.call(arguments, 0),
                    o = !n.exclusive && !n.namespace,
                    s = j.event.special[n.type] || {},
                    l = [],
                    u,
                    c,
                    f,
                    d,
                    p,
                    h,
                    g,
                    m,
                    v,
                    y,
                    b;
                a[0] = n,
                    n.delegateTarget = this;
                if (!s.preDispatch || s.preDispatch.call(this, n) !== !1) {
                    if (i && (!n.button || n.type !== "click")) {
                        d = j(this),
                            d.context = this.ownerDocument || this;
                        for (f = n.target; f != this; f = f.parentNode || this) if (f.disabled !== !0) {
                            h = {},
                                m = [],
                                d[0] = f;
                            for (u = 0; u < i; u++) v = r[u],
                                y = v.selector,
                            h[y] === t && (h[y] = v.quick ? at(f, v.quick) : d.is(y)),
                            h[y] && m.push(v);
                            m.length && l.push({
                                elem: f,
                                matches: m
                            })
                        }
                    }
                    r.length > i && l.push({
                        elem: this,
                        matches: r.slice(i)
                    });
                    for (u = 0; u < l.length && !n.isPropagationStopped(); u++) {
                        g = l[u],
                            n.currentTarget = g.elem;
                        for (c = 0; c < g.matches.length && !n.isImmediatePropagationStopped(); c++) {
                            v = g.matches[c];
                            if (o || !n.namespace && !v.namespace || n.namespace_re && n.namespace_re.test(v.namespace)) n.data = v.data,
                                n.handleObj = v,
                                p = ((j.event.special[v.origType] || {}).handle || v.handler).apply(g.elem, a),
                            p !== t && (n.result = p, p === !1 && (n.preventDefault(), n.stopPropagation()))
                        }
                    }
                    s.postDispatch && s.postDispatch.call(this, n);
                    return n.result
                }
            },
            props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
            fixHooks: {},
            keyHooks: {
                props: "char charCode key keyCode".split(" "),
                filter: function(e, t) {
                    e.which == null && (e.which = t.charCode != null ? t.charCode: t.keyCode);
                    return e
                }
            },
            mouseHooks: {
                props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
                filter: function(e, n) {
                    var r, i, a, o = n.button,
                        s = n.fromElement;
                    e.pageX == null && n.clientX != null && (r = e.target.ownerDocument || L, i = r.documentElement, a = r.body, e.pageX = n.clientX + (i && i.scrollLeft || a && a.scrollLeft || 0) - (i && i.clientLeft || a && a.clientLeft || 0), e.pageY = n.clientY + (i && i.scrollTop || a && a.scrollTop || 0) - (i && i.clientTop || a && a.clientTop || 0)),
                    !e.relatedTarget && s && (e.relatedTarget = s === e.target ? n.toElement: s),
                    !e.which && o !== t && (e.which = o & 1 ? 1 : o & 2 ? 3 : o & 4 ? 2 : 0);
                    return e
                }
            },
            fix: function(e) {
                if (e[j.expando]) return e;
                var n, r, i = e,
                    a = j.event.fixHooks[e.type] || {},
                    o = a.props ? this.props.concat(a.props) : this.props;
                e = j.Event(i);
                for (n = o.length; n;) r = o[--n],
                    e[r] = i[r];
                e.target || (e.target = i.srcElement || L),
                e.target.nodeType === 3 && (e.target = e.target.parentNode),
                e.metaKey === t && (e.metaKey = e.ctrlKey);
                return a.filter ? a.filter(e, i) : e
            },
            special: {
                ready: {
                    setup: j.bindReady
                },
                load: {
                    noBubble: !0
                },
                focus: {
                    delegateType: "focusin"
                },
                blur: {
                    delegateType: "focusout"
                },
                beforeunload: {
                    setup: function(e, t, n) {
                        j.isWindow(this) && (this.onbeforeunload = n)
                    },
                    teardown: function(e, t) {
                        this.onbeforeunload === t && (this.onbeforeunload = null)
                    }
                }
            },
            simulate: function(e, t, n, r) {
                var i = j.extend(new j.Event, n, {
                    type: e,
                    isSimulated: !0,
                    originalEvent: {}
                });
                r ? j.event.trigger(i, null, t) : j.event.dispatch.call(t, i),
                i.isDefaultPrevented() && n.preventDefault()
            }
        },
            j.event.handle = j.event.dispatch,
            j.removeEvent = L.removeEventListener ?
                function(e, t, n) {
                    e.removeEventListener && e.removeEventListener(t, n, !1)
                }: function(e, t, n) {
                e.detachEvent && e.detachEvent("on" + t, n)
            },
            j.Event = function(e, t) {
                if (! (this instanceof j.Event)) return new j.Event(e, t);
                e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || e.returnValue === !1 || e.getPreventDefault && e.getPreventDefault() ? k: S) : this.type = e,
                t && j.extend(this, t),
                    this.timeStamp = e && e.timeStamp || j.now(),
                    this[j.expando] = !0
            },
            j.Event.prototype = {
                preventDefault: function() {
                    this.isDefaultPrevented = k;
                    var e = this.originalEvent; ! e || (e.preventDefault ? e.preventDefault() : e.returnValue = !1)
                },
                stopPropagation: function() {
                    this.isPropagationStopped = k;
                    var e = this.originalEvent; ! e || (e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0)
                },
                stopImmediatePropagation: function() {
                    this.isImmediatePropagationStopped = k,
                        this.stopPropagation()
                },
                isDefaultPrevented: S,
                isPropagationStopped: S,
                isImmediatePropagationStopped: S
            },
            j.each({
                    mouseenter: "mouseover",
                    mouseleave: "mouseout"
                },
                function(e, t) {
                    j.event.special[e] = {
                        delegateType: t,
                        bindType: t,
                        handle: function(e) {
                            var n = this,
                                r = e.relatedTarget,
                                i = e.handleObj,
                                a = i.selector,
                                o;
                            if (!r || r !== n && !j.contains(n, r)) e.type = i.origType,
                                o = i.handler.apply(this, arguments),
                                e.type = t;
                            return o
                        }
                    }
                }),
        j.support.submitBubbles || (j.event.special.submit = {
            setup: function() {
                if (j.nodeName(this, "form")) return ! 1;
                j.event.add(this, "click._submit keypress._submit",
                    function(e) {
                        var n = e.target,
                            r = j.nodeName(n, "input") || j.nodeName(n, "button") ? n.form: t;
                        r && !r._submit_attached && (j.event.add(r, "submit._submit",
                            function(e) {
                                e._submit_bubble = !0
                            }), r._submit_attached = !0)
                    })
            },
            postDispatch: function(e) {
                e._submit_bubble && (delete e._submit_bubble, this.parentNode && !e.isTrigger && j.event.simulate("submit", this.parentNode, e, !0))
            },
            teardown: function() {
                if (j.nodeName(this, "form")) return ! 1;
                j.event.remove(this, "._submit")
            }
        }),
        j.support.changeBubbles || (j.event.special.change = {
            setup: function() {
                if (Y.test(this.nodeName)) {
                    if (this.type === "checkbox" || this.type === "radio") j.event.add(this, "propertychange._change",
                        function(e) {
                            e.originalEvent.propertyName === "checked" && (this._just_changed = !0)
                        }),
                        j.event.add(this, "click._change",
                            function(e) {
                                this._just_changed && !e.isTrigger && (this._just_changed = !1, j.event.simulate("change", this, e, !0))
                            });
                    return ! 1
                }
                j.event.add(this, "beforeactivate._change",
                    function(e) {
                        var t = e.target;
                        Y.test(t.nodeName) && !t._change_attached && (j.event.add(t, "change._change",
                            function(e) {
                                this.parentNode && !e.isSimulated && !e.isTrigger && j.event.simulate("change", this.parentNode, e, !0)
                            }), t._change_attached = !0)
                    })
            },
            handle: function(e) {
                var t = e.target;
                if (this !== t || e.isSimulated || e.isTrigger || t.type !== "radio" && t.type !== "checkbox") return e.handleObj.handler.apply(this, arguments)
            },
            teardown: function() {
                j.event.remove(this, "._change");
                return Y.test(this.nodeName)
            }
        }),
        j.support.focusinBubbles || j.each({
                focus: "focusin",
                blur: "focusout"
            },
            function(e, t) {
                var n = 0,
                    r = function(e) {
                        j.event.simulate(t, e.target, j.event.fix(e), !0)
                    };
                j.event.special[t] = {
                    setup: function() {
                        n++===0 && L.addEventListener(e, r, !0)
                    },
                    teardown: function() {--n === 0 && L.removeEventListener(e, r, !0)
                    }
                }
            }),
            j.fn.extend({
                on: function(e, n, r, i, a) {
                    var o, s;
                    if (typeof e == "object") {
                        typeof n != "string" && (r = r || n, n = t);
                        for (s in e) this.on(s, n, r, e[s], a);
                        return this
                    }
                    r == null && i == null ? (i = n, r = n = t) : i == null && (typeof n == "string" ? (i = r, r = t) : (i = r, r = n, n = t));
                    if (i === !1) i = S;
                    else if (!i) return this;
                    a === 1 && (o = i, i = function(e) {
                        j().off(e);
                        return o.apply(this, arguments)
                    },
                        i.guid = o.guid || (o.guid = j.guid++));
                    return this.each(function() {
                        j.event.add(this, e, i, r, n)
                    })
                },
                one: function(e, t, n, r) {
                    return this.on(e, t, n, r, 1)
                },
                off: function(e, n, r) {
                    if (e && e.preventDefault && e.handleObj) {
                        var i = e.handleObj;
                        j(e.delegateTarget).off(i.namespace ? i.origType + "." + i.namespace: i.origType, i.selector, i.handler);
                        return this
                    }
                    if (typeof e == "object") {
                        for (var a in e) this.off(a, n, e[a]);
                        return this
                    }
                    if (n === !1 || typeof n == "function") r = n,
                        n = t;
                    r === !1 && (r = S);
                    return this.each(function() {
                        j.event.remove(this, e, r, n)
                    })
                },
                bind: function(e, t, n) {
                    return this.on(e, null, t, n)
                },
                unbind: function(e, t) {
                    return this.off(e, null, t)
                },
                live: function(e, t, n) {
                    j(this.context).on(e, this.selector, t, n);
                    return this
                },
                die: function(e, t) {
                    j(this.context).off(e, this.selector || "**", t);
                    return this
                },
                delegate: function(e, t, n, r) {
                    return this.on(t, e, n, r)
                },
                undelegate: function(e, t, n) {
                    return arguments.length == 1 ? this.off(e, "**") : this.off(t, e, n)
                },
                trigger: function(e, t) {
                    return this.each(function() {
                        j.event.trigger(e, t, this)
                    })
                },
                triggerHandler: function(e, t) {
                    if (this[0]) return j.event.trigger(e, t, this[0], !0)
                },
                toggle: function(e) {
                    var t = arguments,
                        n = e.guid || j.guid++,
                        r = 0,
                        i = function(n) {
                            var i = (j._data(this, "lastToggle" + e.guid) || 0) % r;
                            j._data(this, "lastToggle" + e.guid, i + 1),
                                n.preventDefault();
                            return t[i].apply(this, arguments) || !1
                        };
                    i.guid = n;
                    while (r < t.length) t[r++].guid = n;
                    return this.click(i)
                },
                hover: function(e, t) {
                    return this.mouseenter(e).mouseleave(t || e)
                }
            }),
            j.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),
                function(e, t) {
                    j.fn[t] = function(e, n) {
                        n == null && (n = e, e = null);
                        return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
                    },
                    j.attrFn && (j.attrFn[t] = !0),
                    et.test(t) && (j.event.fixHooks[t] = j.event.keyHooks),
                    tt.test(t) && (j.event.fixHooks[t] = j.event.mouseHooks)
                }),
            function() {
                function e(e, t, n, r, a, o) {
                    for (var s = 0,
                             l = r.length; s < l; s++) {
                        var u = r[s];
                        if (u) {
                            var c = !1;
                            u = u[e];
                            while (u) {
                                if (u[i] === n) {
                                    c = r[u.sizset];
                                    break
                                }
                                if (u.nodeType === 1) {
                                    o || (u[i] = n, u.sizset = s);
                                    if (typeof t != "string") {
                                        if (u === t) {
                                            c = !0;
                                            break
                                        }
                                    } else if (d.filter(t, [u]).length > 0) {
                                        c = u;
                                        break
                                    }
                                }
                                u = u[e]
                            }
                            r[s] = c
                        }
                    }
                }
                function n(e, t, n, r, a, o) {
                    for (var s = 0,
                             l = r.length; s < l; s++) {
                        var u = r[s];
                        if (u) {
                            var c = !1;
                            u = u[e];
                            while (u) {
                                if (u[i] === n) {
                                    c = r[u.sizset];
                                    break
                                }
                                u.nodeType === 1 && !o && (u[i] = n, u.sizset = s);
                                if (u.nodeName.toLowerCase() === t) {
                                    c = u;
                                    break
                                }
                                u = u[e]
                            }
                            r[s] = c
                        }
                    }
                }
                var r = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
                    i = "sizcache" + (Math.random() + "").replace(".", ""),
                    a = 0,
                    o = Object.prototype.toString,
                    s = !1,
                    l = !0,
                    u = /\\/g,
                    c = /\r\n/g,
                    f = /\W/; [0, 0].sort(function() {
                    l = !1;
                    return 0
                });
                var d = function(e, t, n, i) {
                    n = n || [],
                        t = t || L;
                    var a = t;
                    if (t.nodeType !== 1 && t.nodeType !== 9) return [];
                    if (!e || typeof e != "string") return n;
                    var s, l, u, c, f, p, m, v, b = !0,
                        x = d.isXML(t),
                        w = [],
                        C = e;
                    do {
                        r.exec(""), s = r.exec(C);
                        if (s) {
                            C = s[3],
                                w.push(s[1]);
                            if (s[2]) {
                                c = s[3];
                                break
                            }
                        }
                    } while ( s );
                    if (w.length > 1 && g.exec(e)) if (w.length === 2 && h.relative[w[0]]) l = T(w[0] + w[1], t, i);
                    else {
                        l = h.relative[w[0]] ? [t] : d(w.shift(), t);
                        while (w.length) e = w.shift(),
                        h.relative[e] && (e += w.shift()),
                            l = T(e, l, i)
                    } else { ! i && w.length > 1 && t.nodeType === 9 && !x && h.match.ID.test(w[0]) && !h.match.ID.test(w[w.length - 1]) && (f = d.find(w.shift(), t, x), t = f.expr ? d.filter(f.expr, f.set)[0] : f.set[0]);
                        if (t) {
                            f = i ? {
                                expr: w.pop(),
                                set: y(i)
                            }: d.find(w.pop(), w.length === 1 && (w[0] === "~" || w[0] === "+") && t.parentNode ? t.parentNode: t, x),
                                l = f.expr ? d.filter(f.expr, f.set) : f.set,
                                w.length > 0 ? u = y(l) : b = !1;
                            while (w.length) p = w.pop(),
                                m = p,
                                h.relative[p] ? m = w.pop() : p = "",
                            m == null && (m = t),
                                h.relative[p](u, m, x)
                        } else u = w = []
                    }
                    u || (u = l),
                    u || d.error(p || e);
                    if (o.call(u) === "[object Array]") if (!b) n.push.apply(n, u);
                    else if (t && t.nodeType === 1) for (v = 0; u[v] != null; v++) u[v] && (u[v] === !0 || u[v].nodeType === 1 && d.contains(t, u[v])) && n.push(l[v]);
                    else for (v = 0; u[v] != null; v++) u[v] && u[v].nodeType === 1 && n.push(l[v]);
                    else y(u, n);
                    c && (d(c, a, n, i), d.uniqueSort(n));
                    return n
                };
                d.uniqueSort = function(e) {
                    if (x) {
                        s = l,
                            e.sort(x);
                        if (s) for (var t = 1; t < e.length; t++) e[t] === e[t - 1] && e.splice(t--, 1)
                    }
                    return e
                },
                    d.matches = function(e, t) {
                        return d(e, null, null, t)
                    },
                    d.matchesSelector = function(e, t) {
                        return d(t, null, null, [e]).length > 0
                    },
                    d.find = function(e, t, n) {
                        var r, i, a, o, s, l;
                        if (!e) return [];
                        for (i = 0, a = h.order.length; i < a; i++) {
                            s = h.order[i];
                            if (o = h.leftMatch[s].exec(e)) {
                                l = o[1],
                                    o.splice(1, 1);
                                if (l.substr(l.length - 1) !== "\\") {
                                    o[1] = (o[1] || "").replace(u, ""),
                                        r = h.find[s](o, t, n);
                                    if (r != null) {
                                        e = e.replace(h.match[s], "");
                                        break
                                    }
                                }
                            }
                        }
                        r || (r = typeof t.getElementsByTagName != "undefined" ? t.getElementsByTagName("*") : []);
                        return {
                            set: r,
                            expr: e
                        }
                    },
                    d.filter = function(e, n, r, i) {
                        var a, o, s, l, u, c, f, p, g, m = e,
                            v = [],
                            y = n,
                            b = n && n[0] && d.isXML(n[0]);
                        while (e && n.length) {
                            for (s in h.filter) if ((a = h.leftMatch[s].exec(e)) != null && a[2]) {
                                c = h.filter[s],
                                    f = a[1],
                                    o = !1,
                                    a.splice(1, 1);
                                if (f.substr(f.length - 1) === "\\") continue;
                                y === v && (v = []);
                                if (h.preFilter[s]) {
                                    a = h.preFilter[s](a, y, r, v, i, b);
                                    if (!a) o = l = !0;
                                    else if (a === !0) continue
                                }
                                if (a) for (p = 0; (u = y[p]) != null; p++) u && (l = c(u, a, p, y), g = i ^ l, r && l != null ? g ? o = !0 : y[p] = !1 : g && (v.push(u), o = !0));
                                if (l !== t) {
                                    r || (y = v),
                                        e = e.replace(h.match[s], "");
                                    if (!o) return [];
                                    break
                                }
                            }
                            if (e === m) if (o == null) d.error(e);
                            else break;
                            m = e
                        }
                        return y
                    },
                    d.error = function(e) {
                        throw new Error("Syntax error, unrecognized expression: " + e)
                    };
                var p = d.getText = function(e) {
                        var t, n, r = e.nodeType,
                            i = "";
                        if (r) {
                            if (r === 1 || r === 9 || r === 11) {
                                if (typeof e.textContent == "string") return e.textContent;
                                if (typeof e.innerText == "string") return e.innerText.replace(c, "");
                                for (e = e.firstChild; e; e = e.nextSibling) i += p(e)
                            } else if (r === 3 || r === 4) return e.nodeValue
                        } else for (t = 0; n = e[t]; t++) n.nodeType !== 8 && (i += p(n));
                        return i
                    },
                    h = d.selectors = {
                        order: ["ID", "NAME", "TAG"],
                        match: {
                            ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
                            CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
                            NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
                            ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
                            TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
                            CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
                            POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
                            PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
                        },
                        leftMatch: {},
                        attrMap: {
                            "class": "className",
                            "for": "htmlFor"
                        },
                        attrHandle: {
                            href: function(e) {
                                return e.getAttribute("href")
                            },
                            type: function(e) {
                                return e.getAttribute("type")
                            }
                        },
                        relative: {
                            "+": function(e, t) {
                                var n = typeof t == "string",
                                    r = n && !f.test(t),
                                    i = n && !r;
                                r && (t = t.toLowerCase());
                                for (var a = 0,
                                         o = e.length,
                                         s; a < o; a++) if (s = e[a]) {
                                    while ((s = s.previousSibling) && s.nodeType !== 1);
                                    e[a] = i || s && s.nodeName.toLowerCase() === t ? s || !1 : s === t
                                }
                                i && d.filter(t, e, !0)
                            },
                            ">": function(e, t) {
                                var n, r = typeof t == "string",
                                    i = 0,
                                    a = e.length;
                                if (r && !f.test(t)) {
                                    t = t.toLowerCase();
                                    for (; i < a; i++) {
                                        n = e[i];
                                        if (n) {
                                            var o = n.parentNode;
                                            e[i] = o.nodeName.toLowerCase() === t ? o: !1
                                        }
                                    }
                                } else {
                                    for (; i < a; i++) n = e[i],
                                    n && (e[i] = r ? n.parentNode: n.parentNode === t);
                                    r && d.filter(t, e, !0)
                                }
                            },
                            "": function(t, r, i) {
                                var o, s = a++,
                                    l = e;
                                typeof r == "string" && !f.test(r) && (r = r.toLowerCase(), o = r, l = n),
                                    l("parentNode", r, s, t, o, i)
                            },
                            "~": function(t, r, i) {
                                var o, s = a++,
                                    l = e;
                                typeof r == "string" && !f.test(r) && (r = r.toLowerCase(), o = r, l = n),
                                    l("previousSibling", r, s, t, o, i)
                            }
                        },
                        find: {
                            ID: function(e, t, n) {
                                if (typeof t.getElementById != "undefined" && !n) {
                                    var r = t.getElementById(e[1]);
                                    return r && r.parentNode ? [r] : []
                                }
                            },
                            NAME: function(e, t) {
                                if (typeof t.getElementsByName != "undefined") {
                                    var n = [],
                                        r = t.getElementsByName(e[1]);
                                    for (var i = 0,
                                             a = r.length; i < a; i++) r[i].getAttribute("name") === e[1] && n.push(r[i]);
                                    return n.length === 0 ? null: n
                                }
                            },
                            TAG: function(e, t) {
                                if (typeof t.getElementsByTagName != "undefined") return t.getElementsByTagName(e[1])
                            }
                        },
                        preFilter: {
                            CLASS: function(e, t, n, r, i, a) {
                                e = " " + e[1].replace(u, "") + " ";
                                if (a) return e;
                                for (var o = 0,
                                         s; (s = t[o]) != null; o++) s && (i ^ (s.className && (" " + s.className + " ").replace(/[\t\n\r]/g, " ").indexOf(e) >= 0) ? n || r.push(s) : n && (t[o] = !1));
                                return ! 1
                            },
                            ID: function(e) {
                                return e[1].replace(u, "")
                            },
                            TAG: function(e, t) {
                                return e[1].replace(u, "").toLowerCase()
                            },
                            CHILD: function(e) {
                                if (e[1] === "nth") {
                                    e[2] || d.error(e[0]),
                                        e[2] = e[2].replace(/^\+|\s*/g, "");
                                    var t = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2] === "even" && "2n" || e[2] === "odd" && "2n+1" || !/\D/.test(e[2]) && "0n+" + e[2] || e[2]);
                                    e[2] = t[1] + (t[2] || 1) - 0,
                                        e[3] = t[3] - 0
                                } else e[2] && d.error(e[0]);
                                e[0] = a++;
                                return e
                            },
                            ATTR: function(e, t, n, r, i, a) {
                                var o = e[1] = e[1].replace(u, ""); ! a && h.attrMap[o] && (e[1] = h.attrMap[o]),
                                    e[4] = (e[4] || e[5] || "").replace(u, ""),
                                e[2] === "~=" && (e[4] = " " + e[4] + " ");
                                return e
                            },
                            PSEUDO: function(e, t, n, i, a) {
                                if (e[1] === "not") if ((r.exec(e[3]) || "").length > 1 || /^\w/.test(e[3])) e[3] = d(e[3], null, null, t);
                                else {
                                    var o = d.filter(e[3], t, n, !0 ^ a);
                                    n || i.push.apply(i, o);
                                    return ! 1
                                } else if (h.match.POS.test(e[0]) || h.match.CHILD.test(e[0])) return ! 0;
                                return e
                            },
                            POS: function(e) {
                                e.unshift(!0);
                                return e
                            }
                        },
                        filters: {
                            enabled: function(e) {
                                return e.disabled === !1 && e.type !== "hidden"
                            },
                            disabled: function(e) {
                                return e.disabled === !0
                            },
                            checked: function(e) {
                                return e.checked === !0
                            },
                            selected: function(e) {
                                e.parentNode && e.parentNode.selectedIndex;
                                return e.selected === !0
                            },
                            parent: function(e) {
                                return !! e.firstChild
                            },
                            empty: function(e) {
                                return ! e.firstChild
                            },
                            has: function(e, t, n) {
                                return !! d(n[3], e).length
                            },
                            header: function(e) {
                                return /h\d/i.test(e.nodeName)
                            },
                            text: function(e) {
                                var t = e.getAttribute("type"),
                                    n = e.type;
                                return e.nodeName.toLowerCase() === "input" && "text" === n && (t === n || t === null)
                            },
                            radio: function(e) {
                                return e.nodeName.toLowerCase() === "input" && "radio" === e.type
                            },
                            checkbox: function(e) {
                                return e.nodeName.toLowerCase() === "input" && "checkbox" === e.type
                            },
                            file: function(e) {
                                return e.nodeName.toLowerCase() === "input" && "file" === e.type
                            },
                            password: function(e) {
                                return e.nodeName.toLowerCase() === "input" && "password" === e.type
                            },
                            submit: function(e) {
                                var t = e.nodeName.toLowerCase();
                                return (t === "input" || t === "button") && "submit" === e.type
                            },
                            image: function(e) {
                                return e.nodeName.toLowerCase() === "input" && "image" === e.type
                            },
                            reset: function(e) {
                                var t = e.nodeName.toLowerCase();
                                return (t === "input" || t === "button") && "reset" === e.type
                            },
                            button: function(e) {
                                var t = e.nodeName.toLowerCase();
                                return t === "input" && "button" === e.type || t === "button"
                            },
                            input: function(e) {
                                return /input|select|textarea|button/i.test(e.nodeName)
                            },
                            focus: function(e) {
                                return e === e.ownerDocument.activeElement
                            }
                        },
                        setFilters: {
                            first: function(e, t) {
                                return t === 0
                            },
                            last: function(e, t, n, r) {
                                return t === r.length - 1
                            },
                            even: function(e, t) {
                                return t % 2 === 0
                            },
                            odd: function(e, t) {
                                return t % 2 === 1
                            },
                            lt: function(e, t, n) {
                                return t < n[3] - 0
                            },
                            gt: function(e, t, n) {
                                return t > n[3] - 0
                            },
                            nth: function(e, t, n) {
                                return n[3] - 0 === t
                            },
                            eq: function(e, t, n) {
                                return n[3] - 0 === t
                            }
                        },
                        filter: {
                            PSEUDO: function(e, t, n, r) {
                                var i = t[1],
                                    a = h.filters[i];
                                if (a) return a(e, n, t, r);
                                if (i === "contains") return (e.textContent || e.innerText || p([e]) || "").indexOf(t[3]) >= 0;
                                if (i === "not") {
                                    var o = t[3];
                                    for (var s = 0,
                                             l = o.length; s < l; s++) if (o[s] === e) return ! 1;
                                    return ! 0
                                }
                                d.error(i)
                            },
                            CHILD: function(e, t) {
                                var n, r, a, o, s, l, u, c = t[1],
                                    f = e;
                                switch (c) {
                                    case "only":
                                    case "first":
                                        while (f = f.previousSibling) if (f.nodeType === 1) return ! 1;
                                        if (c === "first") return ! 0;
                                        f = e;
                                    case "last":
                                        while (f = f.nextSibling) if (f.nodeType === 1) return ! 1;
                                        return ! 0;
                                    case "nth":
                                        n = t[2],
                                            r = t[3];
                                        if (n === 1 && r === 0) return ! 0;
                                        a = t[0],
                                            o = e.parentNode;
                                        if (o && (o[i] !== a || !e.nodeIndex)) {
                                            l = 0;
                                            for (f = o.firstChild; f; f = f.nextSibling) f.nodeType === 1 && (f.nodeIndex = ++l);
                                            o[i] = a
                                        }
                                        u = e.nodeIndex - r;
                                        return n === 0 ? u === 0 : u % n === 0 && u / n >= 0
                                }
                            },
                            ID: function(e, t) {
                                return e.nodeType === 1 && e.getAttribute("id") === t
                            },
                            TAG: function(e, t) {
                                return t === "*" && e.nodeType === 1 || !!e.nodeName && e.nodeName.toLowerCase() === t
                            },
                            CLASS: function(e, t) {
                                return (" " + (e.className || e.getAttribute("class")) + " ").indexOf(t) > -1
                            },
                            ATTR: function(e, t) {
                                var n = t[1],
                                    r = d.attr ? d.attr(e, n) : h.attrHandle[n] ? h.attrHandle[n](e) : e[n] != null ? e[n] : e.getAttribute(n),
                                    i = r + "",
                                    a = t[2],
                                    o = t[4];
                                return r == null ? a === "!=": !a && d.attr ? r != null: a === "=" ? i === o: a === "*=" ? i.indexOf(o) >= 0 : a === "~=" ? (" " + i + " ").indexOf(o) >= 0 : o ? a === "!=" ? i !== o: a === "^=" ? i.indexOf(o) === 0 : a === "$=" ? i.substr(i.length - o.length) === o: a === "|=" ? i === o || i.substr(0, o.length + 1) === o + "-": !1 : i && r !== !1
                            },
                            POS: function(e, t, n, r) {
                                var i = t[2],
                                    a = h.setFilters[i];
                                if (a) return a(e, n, t, r)
                            }
                        }
                    },
                    g = h.match.POS,
                    m = function(e, t) {
                        return "\\" + (t - 0 + 1)
                    };
                for (var v in h.match) h.match[v] = new RegExp(h.match[v].source + /(?![^\[]*\])(?![^\(]*\))/.source),
                    h.leftMatch[v] = new RegExp(/(^(?:.|\r|\n)*?)/.source + h.match[v].source.replace(/\\(\d+)/g, m));
                h.match.globalPOS = g;
                var y = function(e, t) {
                    e = Array.prototype.slice.call(e, 0);
                    if (t) {
                        t.push.apply(t, e);
                        return t
                    }
                    return e
                };
                try {
                    Array.prototype.slice.call(L.documentElement.childNodes, 0)[0].nodeType
                } catch(b) {
                    y = function(e, t) {
                        var n = 0,
                            r = t || [];
                        if (o.call(e) === "[object Array]") Array.prototype.push.apply(r, e);
                        else if (typeof e.length == "number") for (var i = e.length; n < i; n++) r.push(e[n]);
                        else for (; e[n]; n++) r.push(e[n]);
                        return r
                    }
                }
                var x, w;
                L.documentElement.compareDocumentPosition ? x = function(e, t) {
                    if (e === t) {
                        s = !0;
                        return 0
                    }
                    if (!e.compareDocumentPosition || !t.compareDocumentPosition) return e.compareDocumentPosition ? -1 : 1;
                    return e.compareDocumentPosition(t) & 4 ? -1 : 1
                }: (x = function(e, t) {
                    if (e === t) {
                        s = !0;
                        return 0
                    }
                    if (e.sourceIndex && t.sourceIndex) return e.sourceIndex - t.sourceIndex;
                    var n, r, i = [],
                        a = [],
                        o = e.parentNode,
                        l = t.parentNode,
                        u = o;
                    if (o === l) return w(e, t);
                    if (!o) return - 1;
                    if (!l) return 1;
                    while (u) i.unshift(u),
                        u = u.parentNode;
                    u = l;
                    while (u) a.unshift(u),
                        u = u.parentNode;
                    n = i.length,
                        r = a.length;
                    for (var c = 0; c < n && c < r; c++) if (i[c] !== a[c]) return w(i[c], a[c]);
                    return c === n ? w(e, a[c], -1) : w(i[c], t, 1)
                },
                    w = function(e, t, n) {
                        if (e === t) return n;
                        var r = e.nextSibling;
                        while (r) {
                            if (r === t) return - 1;
                            r = r.nextSibling
                        }
                        return 1
                    }),
                    function() {
                        var e = L.createElement("div"),
                            n = "script" + (new Date).getTime(),
                            r = L.documentElement;
                        e.innerHTML = "<a name='" + n + "'/>",
                            r.insertBefore(e, r.firstChild),
                        L.getElementById(n) && (h.find.ID = function(e, n, r) {
                            if (typeof n.getElementById != "undefined" && !r) {
                                var i = n.getElementById(e[1]);
                                return i ? i.id === e[1] || typeof i.getAttributeNode != "undefined" && i.getAttributeNode("id").nodeValue === e[1] ? [i] : t: []
                            }
                        },
                            h.filter.ID = function(e, t) {
                                var n = typeof e.getAttributeNode != "undefined" && e.getAttributeNode("id");
                                return e.nodeType === 1 && n && n.nodeValue === t
                            }),
                            r.removeChild(e),
                            r = e = null
                    } (),
                    function() {
                        var e = L.createElement("div");
                        e.appendChild(L.createComment("")),
                        e.getElementsByTagName("*").length > 0 && (h.find.TAG = function(e, t) {
                            var n = t.getElementsByTagName(e[1]);
                            if (e[1] === "*") {
                                var r = [];
                                for (var i = 0; n[i]; i++) n[i].nodeType === 1 && r.push(n[i]);
                                n = r
                            }
                            return n
                        }),
                            e.innerHTML = "<a href='#'></a>",
                        e.firstChild && typeof e.firstChild.getAttribute != "undefined" && e.firstChild.getAttribute("href") !== "#" && (h.attrHandle.href = function(e) {
                            return e.getAttribute("href", 2)
                        }),
                            e = null
                    } (),
                L.querySelectorAll &&
                function() {
                    var e = d,
                        t = L.createElement("div"),
                        n = "__sizzle__";
                    t.innerHTML = "<p class='TEST'></p>";
                    if (!t.querySelectorAll || t.querySelectorAll(".TEST").length !== 0) {
                        d = function(t, r, i, a) {
                            r = r || L;
                            if (!a && !d.isXML(r)) {
                                var o = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(t);
                                if (o && (r.nodeType === 1 || r.nodeType === 9)) {
                                    if (o[1]) return y(r.getElementsByTagName(t), i);
                                    if (o[2] && h.find.CLASS && r.getElementsByClassName) return y(r.getElementsByClassName(o[2]), i)
                                }
                                if (r.nodeType === 9) {
                                    if (t === "body" && r.body) return y([r.body], i);
                                    if (o && o[3]) {
                                        var s = r.getElementById(o[3]);
                                        if (!s || !s.parentNode) return y([], i);
                                        if (s.id === o[3]) return y([s], i)
                                    }
                                    try {
                                        return y(r.querySelectorAll(t), i)
                                    } catch(l) {}
                                } else if (r.nodeType === 1 && r.nodeName.toLowerCase() !== "object") {
                                    var u = r,
                                        c = r.getAttribute("id"),
                                        f = c || n,
                                        p = r.parentNode,
                                        g = /^\s*[+~]/.test(t);
                                    c ? f = f.replace(/'/g, "\\$&") : r.setAttribute("id", f),
                                    g && p && (r = r.parentNode);
                                    try {
                                        if (!g || p) return y(r.querySelectorAll("[id='" + f + "'] " + t), i)
                                    } catch(m) {} finally {
                                        c || u.removeAttribute("id")
                                    }
                                }
                            }
                            return e(t, r, i, a)
                        };
                        for (var r in e) d[r] = e[r];
                        t = null
                    }
                } (),
                    function() {
                        var e = L.documentElement,
                            t = e.matchesSelector || e.mozMatchesSelector || e.webkitMatchesSelector || e.msMatchesSelector;
                        if (t) {
                            var n = !t.call(L.createElement("div"), "div"),
                                r = !1;
                            try {
                                t.call(L.documentElement, "[test!='']:sizzle")
                            } catch(i) {
                                r = !0
                            }
                            d.matchesSelector = function(e, i) {
                                i = i.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
                                if (!d.isXML(e)) try {
                                    if (r || !h.match.PSEUDO.test(i) && !/!=/.test(i)) {
                                        var a = t.call(e, i);
                                        if (a || !n || e.document && e.document.nodeType !== 11) return a
                                    }
                                } catch(o) {}
                                return d(i, null, null, [e]).length > 0
                            }
                        }
                    } (),
                    function() {
                        var e = L.createElement("div");
                        e.innerHTML = "<div class='test e'></div><div class='test'></div>";
                        if ( !! e.getElementsByClassName && e.getElementsByClassName("e").length !== 0) {
                            e.lastChild.className = "e";
                            if (e.getElementsByClassName("e").length === 1) return;
                            h.order.splice(1, 0, "CLASS"),
                                h.find.CLASS = function(e, t, n) {
                                    if (typeof t.getElementsByClassName != "undefined" && !n) return t.getElementsByClassName(e[1])
                                },
                                e = null
                        }
                    } (),
                    L.documentElement.contains ? d.contains = function(e, t) {
                        return e !== t && (e.contains ? e.contains(t) : !0)
                    }: L.documentElement.compareDocumentPosition ? d.contains = function(e, t) {
                        return !! (e.compareDocumentPosition(t) & 16)
                    }: d.contains = function() {
                        return ! 1
                    },
                    d.isXML = function(e) {
                        var t = (e ? e.ownerDocument || e: 0).documentElement;
                        return t ? t.nodeName !== "HTML": !1
                    };
                var T = function(e, t, n) {
                    var r, i = [],
                        a = "",
                        o = t.nodeType ? [t] : t;
                    while (r = h.match.PSEUDO.exec(e)) a += r[0],
                        e = e.replace(h.match.PSEUDO, "");
                    e = h.relative[e] ? e + "*": e;
                    for (var s = 0,
                             l = o.length; s < l; s++) d(e, o[s], i, n);
                    return d.filter(a, i)
                };
                d.attr = j.attr,
                    d.selectors.attrMap = {},
                    j.find = d,
                    j.expr = d.selectors,
                    j.expr[":"] = j.expr.filters,
                    j.unique = d.uniqueSort,
                    j.text = d.getText,
                    j.isXMLDoc = d.isXML,
                    j.contains = d.contains
            } ();
        var st = /Until$/,
            lt = /^(?:parents|prevUntil|prevAll)/,
            ut = /,/,
            ct = /^.[^:#\[\.,]*$/,
            ft = Array.prototype.slice,
            dt = j.expr.match.globalPOS,
            pt = {
                children: !0,
                contents: !0,
                next: !0,
                prev: !0
            };
        j.fn.extend({
            find: function(e) {
                var t = this,
                    n, r;
                if (typeof e != "string") return j(e).filter(function() {
                    for (n = 0, r = t.length; n < r; n++) if (j.contains(t[n], this)) return ! 0
                });
                var i = this.pushStack("", "find", e),
                    a,
                    o,
                    s;
                for (n = 0, r = this.length; n < r; n++) {
                    a = i.length,
                        j.find(e, this[n], i);
                    if (n > 0) for (o = a; o < i.length; o++) for (s = 0; s < a; s++) if (i[s] === i[o]) {
                        i.splice(o--, 1);
                        break
                    }
                }
                return i
            },
            has: function(e) {
                var t = j(e);
                return this.filter(function() {
                    for (var e = 0,
                             n = t.length; e < n; e++) if (j.contains(this, t[e])) return ! 0
                })
            },
            not: function(e) {
                return this.pushStack(N(this, e, !1), "not", e)
            },
            filter: function(e) {
                return this.pushStack(N(this, e, !0), "filter", e)
            },
            is: function(e) {
                return !! e && (typeof e == "string" ? dt.test(e) ? j(e, this.context).index(this[0]) >= 0 : j.filter(e, this).length > 0 : this.filter(e).length > 0)
            },
            closest: function(e, t) {
                var n = [],
                    r,
                    i,
                    a = this[0];
                if (j.isArray(e)) {
                    var o = 1;
                    while (a && a.ownerDocument && a !== t) {
                        for (r = 0; r < e.length; r++) j(a).is(e[r]) && n.push({
                            selector: e[r],
                            elem: a,
                            level: o
                        });
                        a = a.parentNode,
                            o++
                    }
                    return n
                }
                var s = dt.test(e) || typeof e != "string" ? j(e, t || this.context) : 0;
                for (r = 0, i = this.length; r < i; r++) {
                    a = this[r];
                    while (a) {
                        if (s ? s.index(a) > -1 : j.find.matchesSelector(a, e)) {
                            n.push(a);
                            break
                        }
                        a = a.parentNode;
                        if (!a || !a.ownerDocument || a === t || a.nodeType === 11) break
                    }
                }
                n = n.length > 1 ? j.unique(n) : n;
                return this.pushStack(n, "closest", e)
            },
            index: function(e) {
                if (!e) return this[0] && this[0].parentNode ? this.prevAll().length: -1;
                if (typeof e == "string") return j.inArray(this[0], j(e));
                return j.inArray(e.jquery ? e[0] : e, this)
            },
            add: function(e, t) {
                var n = typeof e == "string" ? j(e, t) : j.makeArray(e && e.nodeType ? [e] : e),
                    r = j.merge(this.get(), n);
                return this.pushStack(E(n[0]) || E(r[0]) ? r: j.unique(r))
            },
            andSelf: function() {
                return this.add(this.prevObject)
            }
        }),
            j.each({
                    parent: function(e) {
                        var t = e.parentNode;
                        return t && t.nodeType !== 11 ? t: null
                    },
                    parents: function(e) {
                        return j.dir(e, "parentNode")
                    },
                    parentsUntil: function(e, t, n) {
                        return j.dir(e, "parentNode", n)
                    },
                    next: function(e) {
                        return j.nth(e, 2, "nextSibling")
                    },
                    prev: function(e) {
                        return j.nth(e, 2, "previousSibling")
                    },
                    nextAll: function(e) {
                        return j.dir(e, "nextSibling")
                    },
                    prevAll: function(e) {
                        return j.dir(e, "previousSibling")
                    },
                    nextUntil: function(e, t, n) {
                        return j.dir(e, "nextSibling", n)
                    },
                    prevUntil: function(e, t, n) {
                        return j.dir(e, "previousSibling", n)
                    },
                    siblings: function(e) {
                        return j.sibling((e.parentNode || {}).firstChild, e)
                    },
                    children: function(e) {
                        return j.sibling(e.firstChild)
                    },
                    contents: function(e) {
                        return j.nodeName(e, "iframe") ? e.contentDocument || e.contentWindow.document: j.makeArray(e.childNodes)
                    }
                },
                function(e, t) {
                    j.fn[e] = function(n, r) {
                        var i = j.map(this, t, n);
                        st.test(e) || (r = n),
                        r && typeof r == "string" && (i = j.filter(r, i)),
                            i = this.length > 1 && !pt[e] ? j.unique(i) : i,
                        (this.length > 1 || ut.test(r)) && lt.test(e) && (i = i.reverse());
                        return this.pushStack(i, e, ft.call(arguments).join(","))
                    }
                }),
            j.extend({
                filter: function(e, t, n) {
                    n && (e = ":not(" + e + ")");
                    return t.length === 1 ? j.find.matchesSelector(t[0], e) ? [t[0]] : [] : j.find.matches(e, t)
                },
                dir: function(e, n, r) {
                    var i = [],
                        a = e[n];
                    while (a && a.nodeType !== 9 && (r === t || a.nodeType !== 1 || !j(a).is(r))) a.nodeType === 1 && i.push(a),
                        a = a[n];
                    return i
                },
                nth: function(e, t, n, r) {
                    t = t || 1;
                    var i = 0;
                    for (; e; e = e[n]) if (e.nodeType === 1 && ++i === t) break;
                    return e
                },
                sibling: function(e, t) {
                    var n = [];
                    for (; e; e = e.nextSibling) e.nodeType === 1 && e !== t && n.push(e);
                    return n
                }
            });
        var ht = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
            gt = / jQuery\d+="(?:\d+|null)"/g,
            mt = /^\s+/,
            vt = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
            yt = /<([\w:]+)/,
            bt = /<tbody/i,
            xt = /<|&#?\w+;/,
            wt = /<(?:script|style)/i,
            Tt = /<(?:script|object|embed|option|style)/i,
            Ct = new RegExp("<(?:" + ht + ")[\\s/>]", "i"),
            Nt = /checked\s*(?:[^=]|=\s*.checked.)/i,
            Et = /\/(java|ecma)script/i,
            kt = /^\s*<!(?:\[CDATA\[|\-\-)/,
            St = {
                option: [1, "<select multiple='multiple'>", "</select>"],
                legend: [1, "<fieldset>", "</fieldset>"],
                thead: [1, "<table>", "</table>"],
                tr: [2, "<table><tbody>", "</tbody></table>"],
                td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
                col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
                area: [1, "<map>", "</map>"],
                _default: [0, "", ""]
            },
            At = C(L);
        St.optgroup = St.option,
            St.tbody = St.tfoot = St.colgroup = St.caption = St.thead,
            St.th = St.td,
        j.support.htmlSerialize || (St._default = [1, "div<div>", "</div>"]),
            j.fn.extend({
                text: function(e) {
                    return j.access(this,
                        function(e) {
                            return e === t ? j.text(this) : this.empty().append((this[0] && this[0].ownerDocument || L).createTextNode(e))
                        },
                        null, e, arguments.length)
                },
                wrapAll: function(e) {
                    if (j.isFunction(e)) return this.each(function(t) {
                        j(this).wrapAll(e.call(this, t))
                    });
                    if (this[0]) {
                        var t = j(e, this[0].ownerDocument).eq(0).clone(!0);
                        this[0].parentNode && t.insertBefore(this[0]),
                            t.map(function() {
                                var e = this;
                                while (e.firstChild && e.firstChild.nodeType === 1) e = e.firstChild;
                                return e
                            }).append(this)
                    }
                    return this
                },
                wrapInner: function(e) {
                    if (j.isFunction(e)) return this.each(function(t) {
                        j(this).wrapInner(e.call(this, t))
                    });
                    return this.each(function() {
                        var t = j(this),
                            n = t.contents();
                        n.length ? n.wrapAll(e) : t.append(e)
                    })
                },
                wrap: function(e) {
                    var t = j.isFunction(e);
                    return this.each(function(n) {
                        j(this).wrapAll(t ? e.call(this, n) : e)
                    })
                },
                unwrap: function() {
                    return this.parent().each(function() {
                        j.nodeName(this, "body") || j(this).replaceWith(this.childNodes)
                    }).end()
                },
                append: function() {
                    return this.domManip(arguments, !0,
                        function(e) {
                            this.nodeType === 1 && this.appendChild(e)
                        })
                },
                prepend: function() {
                    return this.domManip(arguments, !0,
                        function(e) {
                            this.nodeType === 1 && this.insertBefore(e, this.firstChild)
                        })
                },
                before: function() {
                    if (this[0] && this[0].parentNode) return this.domManip(arguments, !1,
                        function(e) {
                            this.parentNode.insertBefore(e, this)
                        });
                    if (arguments.length) {
                        var e = j.clean(arguments);
                        e.push.apply(e, this.toArray());
                        return this.pushStack(e, "before", arguments)
                    }
                },
                after: function() {
                    if (this[0] && this[0].parentNode) return this.domManip(arguments, !1,
                        function(e) {
                            this.parentNode.insertBefore(e, this.nextSibling)
                        });
                    if (arguments.length) {
                        var e = this.pushStack(this, "after", arguments);
                        e.push.apply(e, j.clean(arguments));
                        return e
                    }
                },
                remove: function(e, t) {
                    for (var n = 0,
                             r; (r = this[n]) != null; n++) if (!e || j.filter(e, [r]).length) ! t && r.nodeType === 1 && (j.cleanData(r.getElementsByTagName("*")), j.cleanData([r])),
                    r.parentNode && r.parentNode.removeChild(r);
                    return this
                },
                empty: function() {
                    for (var e = 0,
                             t; (t = this[e]) != null; e++) {
                        t.nodeType === 1 && j.cleanData(t.getElementsByTagName("*"));
                        while (t.firstChild) t.removeChild(t.firstChild)
                    }
                    return this
                },
                clone: function(e, t) {
                    e = e == null ? !1 : e,
                        t = t == null ? e: t;
                    return this.map(function() {
                        return j.clone(this, e, t)
                    })
                },
                html: function(e) {
                    return j.access(this,
                        function(e) {
                            var n = this[0] || {},
                                r = 0,
                                i = this.length;
                            if (e === t) return n.nodeType === 1 ? n.innerHTML.replace(gt, "") : null;
                            if (typeof e == "string" && !wt.test(e) && (j.support.leadingWhitespace || !mt.test(e)) && !St[(yt.exec(e) || ["", ""])[1].toLowerCase()]) {
                                e = e.replace(vt, "<$1></$2>");
                                try {
                                    for (; r < i; r++) n = this[r] || {},
                                    n.nodeType === 1 && (j.cleanData(n.getElementsByTagName("*")), n.innerHTML = e);
                                    n = 0
                                } catch(a) {}
                            }
                            n && this.empty().append(e)
                        },
                        null, e, arguments.length)
                },
                replaceWith: function(e) {
                    if (this[0] && this[0].parentNode) {
                        if (j.isFunction(e)) return this.each(function(t) {
                            var n = j(this),
                                r = n.html();
                            n.replaceWith(e.call(this, t, r))
                        });
                        typeof e != "string" && (e = j(e).detach());
                        return this.each(function() {
                            var t = this.nextSibling,
                                n = this.parentNode;
                            j(this).remove(),
                                t ? j(t).before(e) : j(n).append(e)
                        })
                    }
                    return this.length ? this.pushStack(j(j.isFunction(e) ? e() : e), "replaceWith", e) : this
                },
                detach: function(e) {
                    return this.remove(e, !0)
                },
                domManip: function(e, n, r) {
                    var i, a, o, s, l = e[0],
                        u = [];
                    if (!j.support.checkClone && arguments.length === 3 && typeof l == "string" && Nt.test(l)) return this.each(function() {
                        j(this).domManip(e, n, r, !0)
                    });
                    if (j.isFunction(l)) return this.each(function(i) {
                        var a = j(this);
                        e[0] = l.call(this, i, n ? a.html() : t),
                            a.domManip(e, n, r)
                    });
                    if (this[0]) {
                        s = l && l.parentNode,
                            j.support.parentNode && s && s.nodeType === 11 && s.childNodes.length === this.length ? i = {
                                fragment: s
                            }: i = j.buildFragment(e, this, u),
                            o = i.fragment,
                            o.childNodes.length === 1 ? a = o = o.firstChild: a = o.firstChild;
                        if (a) {
                            n = n && j.nodeName(a, "tr");
                            for (var c = 0,
                                     f = this.length,
                                     d = f - 1; c < f; c++) r.call(n ? T(this[c], a) : this[c], i.cacheable || f > 1 && c < d ? j.clone(o, !0, !0) : o)
                        }
                        u.length && j.each(u,
                            function(e, t) {
                                t.src ? j.ajax({
                                    type: "GET",
                                    global: !1,
                                    url: t.src,
                                    async: !1,
                                    dataType: "script"
                                }) : j.globalEval((t.text || t.textContent || t.innerHTML || "").replace(kt, "/*$0*/")),
                                t.parentNode && t.parentNode.removeChild(t)
                            })
                    }
                    return this
                }
            }),
            j.buildFragment = function(e, t, n) {
                var r, i, a, o, s = e[0];
                t && t[0] && (o = t[0].ownerDocument || t[0]),
                o.createDocumentFragment || (o = L),
                e.length === 1 && typeof s == "string" && s.length < 512 && o === L && s.charAt(0) === "<" && !Tt.test(s) && (j.support.checkClone || !Nt.test(s)) && (j.support.html5Clone || !Ct.test(s)) && (i = !0, a = j.fragments[s], a && a !== 1 && (r = a)),
                r || (r = o.createDocumentFragment(), j.clean(e, o, r, n)),
                i && (j.fragments[s] = a ? r: 1);
                return {
                    fragment: r,
                    cacheable: i
                }
            },
            j.fragments = {},
            j.each({
                    appendTo: "append",
                    prependTo: "prepend",
                    insertBefore: "before",
                    insertAfter: "after",
                    replaceAll: "replaceWith"
                },
                function(e, t) {
                    j.fn[e] = function(n) {
                        var r = [],
                            i = j(n),
                            a = this.length === 1 && this[0].parentNode;
                        if (a && a.nodeType === 11 && a.childNodes.length === 1 && i.length === 1) {
                            i[t](this[0]);
                            return this
                        }
                        for (var o = 0,
                                 s = i.length; o < s; o++) {
                            var l = (o > 0 ? this.clone(!0) : this).get();
                            j(i[o])[t](l),
                                r = r.concat(l)
                        }
                        return this.pushStack(r, e, i.selector)
                    }
                }),
            j.extend({
                clone: function(e, t, n) {
                    var r, i, a, o = j.support.html5Clone || j.isXMLDoc(e) || !Ct.test("<" + e.nodeName + ">") ? e.cloneNode(!0) : m(e);
                    if ((!j.support.noCloneEvent || !j.support.noCloneChecked) && (e.nodeType === 1 || e.nodeType === 11) && !j.isXMLDoc(e)) {
                        x(e, o),
                            r = b(e),
                            i = b(o);
                        for (a = 0; r[a]; ++a) i[a] && x(r[a], i[a])
                    }
                    if (t) {
                        w(e, o);
                        if (n) {
                            r = b(e),
                                i = b(o);
                            for (a = 0; r[a]; ++a) w(r[a], i[a])
                        }
                    }
                    r = i = null;
                    return o
                },
                clean: function(e, t, n, r) {
                    var i, a, o, s = [];
                    t = t || L,
                    typeof t.createElement == "undefined" && (t = t.ownerDocument || t[0] && t[0].ownerDocument || L);
                    for (var l = 0,
                             u; (u = e[l]) != null; l++) {
                        typeof u == "number" && (u += "");
                        if (!u) continue;
                        if (typeof u == "string") if (!xt.test(u)) u = t.createTextNode(u);
                        else {
                            u = u.replace(vt, "<$1></$2>");
                            var c = (yt.exec(u) || ["", ""])[1].toLowerCase(),
                                f = St[c] || St._default,
                                d = f[0],
                                p = t.createElement("div"),
                                h = At.childNodes,
                                g;
                            t === L ? At.appendChild(p) : C(t).appendChild(p),
                                p.innerHTML = f[1] + u + f[2];
                            while (d--) p = p.lastChild;
                            if (!j.support.tbody) {
                                var m = bt.test(u),
                                    y = c === "table" && !m ? p.firstChild && p.firstChild.childNodes: f[1] === "<table>" && !m ? p.childNodes: [];
                                for (o = y.length - 1; o >= 0; --o) j.nodeName(y[o], "tbody") && !y[o].childNodes.length && y[o].parentNode.removeChild(y[o])
                            } ! j.support.leadingWhitespace && mt.test(u) && p.insertBefore(t.createTextNode(mt.exec(u)[0]), p.firstChild),
                                u = p.childNodes,
                            p && (p.parentNode.removeChild(p), h.length > 0 && (g = h[h.length - 1], g && g.parentNode && g.parentNode.removeChild(g)))
                        }
                        var b;
                        if (!j.support.appendChecked) if (u[0] && typeof(b = u.length) == "number") for (o = 0; o < b; o++) v(u[o]);
                        else v(u);
                        u.nodeType ? s.push(u) : s = j.merge(s, u)
                    }
                    if (n) {
                        i = function(e) {
                            return ! e.type || Et.test(e.type)
                        };
                        for (l = 0; s[l]; l++) {
                            a = s[l];
                            if (r && j.nodeName(a, "script") && (!a.type || Et.test(a.type))) r.push(a.parentNode ? a.parentNode.removeChild(a) : a);
                            else {
                                if (a.nodeType === 1) {
                                    var x = j.grep(a.getElementsByTagName("script"), i);
                                    s.splice.apply(s, [l + 1, 0].concat(x))
                                }
                                n.appendChild(a)
                            }
                        }
                    }
                    return s
                },
                cleanData: function(e) {
                    var t, n, r = j.cache,
                        i = j.event.special,
                        a = j.support.deleteExpando;
                    for (var o = 0,
                             s; (s = e[o]) != null; o++) {
                        if (s.nodeName && j.noData[s.nodeName.toLowerCase()]) continue;
                        n = s[j.expando];
                        if (n) {
                            t = r[n];
                            if (t && t.events) {
                                for (var l in t.events) i[l] ? j.event.remove(s, l) : j.removeEvent(s, l, t.handle);
                                t.handle && (t.handle.elem = null)
                            }
                            a ? delete s[j.expando] : s.removeAttribute && s.removeAttribute(j.expando),
                                delete r[n]
                        }
                    }
                }
            });
        var _t = /alpha\([^)]*\)/i,
            Mt = /opacity=([^)]*)/,
            Dt = /([A-Z]|^ms)/g,
            Lt = /^[\-+]?(?:\d*\.)?\d+$/i,
            Ft = /^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,
            Ht = /^([\-+])=([\-+.\de]+)/,
            jt = /^margin/,
            Pt = {
                position: "absolute",
                visibility: "hidden",
                display: "block"
            },
            Ot = ["Top", "Right", "Bottom", "Left"],
            qt,
            Bt,
            Rt;
        j.fn.css = function(e, n) {
            return j.access(this,
                function(e, n, r) {
                    return r !== t ? j.style(e, n, r) : j.css(e, n)
                },
                e, n, arguments.length > 1)
        },
            j.extend({
                cssHooks: {
                    opacity: {
                        get: function(e, t) {
                            if (t) {
                                var n = qt(e, "opacity");
                                return n === "" ? "1": n
                            }
                            return e.style.opacity
                        }
                    }
                },
                cssNumber: {
                    fillOpacity: !0,
                    fontWeight: !0,
                    lineHeight: !0,
                    opacity: !0,
                    orphans: !0,
                    widows: !0,
                    zIndex: !0,
                    zoom: !0
                },
                cssProps: {
                    "float": j.support.cssFloat ? "cssFloat": "styleFloat"
                },
                style: function(e, n, r, i) {
                    if ( !! e && e.nodeType !== 3 && e.nodeType !== 8 && !!e.style) {
                        var a, o, s = j.camelCase(n),
                            l = e.style,
                            u = j.cssHooks[s];
                        n = j.cssProps[s] || s;
                        if (r === t) {
                            if (u && "get" in u && (a = u.get(e, !1, i)) !== t) return a;
                            return l[n]
                        }
                        o = typeof r,
                        o === "string" && (a = Ht.exec(r)) && (r = +(a[1] + 1) * +a[2] + parseFloat(j.css(e, n)), o = "number");
                        if (r == null || o === "number" && isNaN(r)) return;
                        o === "number" && !j.cssNumber[s] && (r += "px");
                        if (!u || !("set" in u) || (r = u.set(e, r)) !== t) try {
                            l[n] = r
                        } catch(c) {}
                    }
                },
                css: function(e, n, r) {
                    var i, a;
                    n = j.camelCase(n),
                        a = j.cssHooks[n],
                        n = j.cssProps[n] || n,
                    n === "cssFloat" && (n = "float");
                    if (a && "get" in a && (i = a.get(e, !0, r)) !== t) return i;
                    if (qt) return qt(e, n)
                },
                swap: function(e, t, n) {
                    var r = {},
                        i, a;
                    for (a in t) r[a] = e.style[a],
                        e.style[a] = t[a];
                    i = n.call(e);
                    for (a in t) e.style[a] = r[a];
                    return i
                }
            }),
            j.curCSS = j.css,
        L.defaultView && L.defaultView.getComputedStyle && (Bt = function(e, t) {
            var n, r, i, a, o = e.style;
            t = t.replace(Dt, "-$1").toLowerCase(),
            (r = e.ownerDocument.defaultView) && (i = r.getComputedStyle(e, null)) && (n = i.getPropertyValue(t), n === "" && !j.contains(e.ownerDocument.documentElement, e) && (n = j.style(e, t))),
            !j.support.pixelMargin && i && jt.test(t) && Ft.test(n) && (a = o.width, o.width = n, n = i.width, o.width = a);
            return n
        }),
        L.documentElement.currentStyle && (Rt = function(e, t) {
            var n, r, i, a = e.currentStyle && e.currentStyle[t],
                o = e.style;
            a == null && o && (i = o[t]) && (a = i),
            Ft.test(a) && (n = o.left, r = e.runtimeStyle && e.runtimeStyle.left, r && (e.runtimeStyle.left = e.currentStyle.left), o.left = t === "fontSize" ? "1em": a, a = o.pixelLeft + "px", o.left = n, r && (e.runtimeStyle.left = r));
            return a === "" ? "auto": a
        }),
            qt = Bt || Rt,
            j.each(["height", "width"],
                function(e, t) {
                    j.cssHooks[t] = {
                        get: function(e, n, r) {
                            if (n) return e.offsetWidth !== 0 ? g(e, t, r) : j.swap(e, Pt,
                                function() {
                                    return g(e, t, r)
                                })
                        },
                        set: function(e, t) {
                            return Lt.test(t) ? t + "px": t
                        }
                    }
                }),
        j.support.opacity || (j.cssHooks.opacity = {
            get: function(e, t) {
                return Mt.test((t && e.currentStyle ? e.currentStyle.filter: e.style.filter) || "") ? parseFloat(RegExp.$1) / 100 + "": t ? "1": ""
            },
            set: function(e, t) {
                var n = e.style,
                    r = e.currentStyle,
                    i = j.isNumeric(t) ? "alpha(opacity=" + t * 100 + ")": "",
                    a = r && r.filter || n.filter || "";
                n.zoom = 1;
                if (t >= 1 && j.trim(a.replace(_t, "")) === "") {
                    n.removeAttribute("filter");
                    if (r && !r.filter) return
                }
                n.filter = _t.test(a) ? a.replace(_t, i) : a + " " + i
            }
        }),
            j(function() {
                j.support.reliableMarginRight || (j.cssHooks.marginRight = {
                    get: function(e, t) {
                        return j.swap(e, {
                                display: "inline-block"
                            },
                            function() {
                                return t ? qt(e, "margin-right") : e.style.marginRight
                            })
                    }
                })
            }),
        j.expr && j.expr.filters && (j.expr.filters.hidden = function(e) {
            var t = e.offsetWidth,
                n = e.offsetHeight;
            return t === 0 && n === 0 || !j.support.reliableHiddenOffsets && (e.style && e.style.display || j.css(e, "display")) === "none"
        },
            j.expr.filters.visible = function(e) {
                return ! j.expr.filters.hidden(e)
            }),
            j.each({
                    margin: "",
                    padding: "",
                    border: "Width"
                },
                function(e, t) {
                    j.cssHooks[e + t] = {
                        expand: function(n) {
                            var r, i = typeof n == "string" ? n.split(" ") : [n],
                                a = {};
                            for (r = 0; r < 4; r++) a[e + Ot[r] + t] = i[r] || i[r - 2] || i[0];
                            return a
                        }
                    }
                });
        var It = /%20/g,
            Qt = /\[\]$/,
            Wt = /\r?\n/g,
            $t = /#.*$/,
            Xt = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
            Vt = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
            zt = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
            Ut = /^(?:GET|HEAD)$/,
            Gt = /^\/\//,
            Jt = /\?/,
            Yt = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
            Kt = /^(?:select|textarea)/i,
            Zt = /\s+/,
            en = /([?&])_=[^&]*/,
            tn = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
            nn = j.fn.load,
            rn = {},
            an = {},
            on, sn, ln = ["*/"] + ["*"];
        try {
            on = H.href
        } catch(un) {
            on = L.createElement("a"),
                on.href = "",
                on = on.href
        }
        sn = tn.exec(on.toLowerCase()) || [],
            j.fn.extend({
                load: function(e, n, r) {
                    if (typeof e != "string" && nn) return nn.apply(this, arguments);
                    if (!this.length) return this;
                    var i = e.indexOf(" ");
                    if (i >= 0) {
                        var a = e.slice(i, e.length);
                        e = e.slice(0, i)
                    }
                    var o = "GET";
                    n && (j.isFunction(n) ? (r = n, n = t) : typeof n == "object" && (n = j.param(n, j.ajaxSettings.traditional), o = "POST"));
                    var s = this;
                    j.ajax({
                        url: e,
                        type: o,
                        dataType: "html",
                        data: n,
                        complete: function(e, t, n) {
                            n = e.responseText,
                            e.isResolved() && (e.done(function(e) {
                                n = e
                            }), s.html(a ? j("<div>").append(n.replace(Yt, "")).find(a) : n)),
                            r && s.each(r, [n, t, e])
                        }
                    });
                    return this
                },
                serialize: function() {
                    return j.param(this.serializeArray())
                },
                serializeArray: function() {
                    return this.map(function() {
                        return this.elements ? j.makeArray(this.elements) : this
                    }).filter(function() {
                        return this.name && !this.disabled && (this.checked || Kt.test(this.nodeName) || Vt.test(this.type))
                    }).map(function(e, t) {
                        var n = j(this).val();
                        return n == null ? null: j.isArray(n) ? j.map(n,
                            function(e, n) {
                                return {
                                    name: t.name,
                                    value: e.replace(Wt, "\r\n")
                                }
                            }) : {
                            name: t.name,
                            value: n.replace(Wt, "\r\n")
                        }
                    }).get()
                }
            }),
            j.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
                function(e, t) {
                    j.fn[t] = function(e) {
                        return this.on(t, e)
                    }
                }),
            j.each(["get", "post"],
                function(e, n) {
                    j[n] = function(e, r, i, a) {
                        j.isFunction(r) && (a = a || i, i = r, r = t);
                        return j.ajax({
                            type: n,
                            url: e,
                            data: r,
                            success: i,
                            dataType: a
                        })
                    }
                }),
            j.extend({
                getScript: function(e, n) {
                    return j.get(e, t, n, "script")
                },
                getJSON: function(e, t, n) {
                    return j.get(e, t, n, "json")
                },
                ajaxSetup: function(e, t) {
                    t ? d(e, j.ajaxSettings) : (t = e, e = j.ajaxSettings),
                        d(e, t);
                    return e
                },
                ajaxSettings: {
                    url: on,
                    isLocal: zt.test(sn[1]),
                    global: !0,
                    type: "GET",
                    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                    processData: !0,
                    async: !0,
                    accepts: {
                        xml: "application/xml, text/xml",
                        html: "text/html",
                        text: "text/plain",
                        json: "application/json, text/javascript",
                        "*": ln
                    },
                    contents: {
                        xml: /xml/,
                        html: /html/,
                        json: /json/
                    },
                    responseFields: {
                        xml: "responseXML",
                        text: "responseText"
                    },
                    converters: {
                        "* text": e.String,
                        "text html": !0,
                        "text json": j.parseJSON,
                        "text xml": j.parseXML
                    },
                    flatOptions: {
                        context: !0,
                        url: !0
                    }
                },
                ajaxPrefilter: h(rn),
                ajaxTransport: h(an),
                ajax: function(e, n) {
                    function r(e, n, r, p) {
                        if (w !== 2) {
                            w = 2,
                            b && clearTimeout(b),
                                y = t,
                                m = p || "",
                                N.readyState = e > 0 ? 4 : 0;
                            var h, g, v, x = n,
                                C = r ? c(i, N, r) : t,
                                E,
                                k;
                            if (e >= 200 && e < 300 || e === 304) {
                                if (i.ifModified) {
                                    if (E = N.getResponseHeader("Last-Modified")) j.lastModified[d] = E;
                                    if (k = N.getResponseHeader("Etag")) j.etag[d] = k
                                }
                                if (e === 304) x = "notmodified",
                                    h = !0;
                                else try {
                                    g = u(i, C),
                                        x = "success",
                                        h = !0
                                } catch(S) {
                                    x = "parsererror",
                                        v = S
                                }
                            } else {
                                v = x;
                                if (!x || e) x = "error",
                                e < 0 && (e = 0)
                            }
                            N.status = e,
                                N.statusText = "" + (n || x),
                                h ? s.resolveWith(a, [g, x, N]) : s.rejectWith(a, [N, x, v]),
                                N.statusCode(f),
                                f = t,
                            T && o.trigger("ajax" + (h ? "Success": "Error"), [N, i, h ? g: v]),
                                l.fireWith(a, [N, x]),
                            T && (o.trigger("ajaxComplete", [N, i]), --j.active || j.event.trigger("ajaxStop"))
                        }
                    }
                    typeof e == "object" && (n = e, e = t),
                        n = n || {};
                    var i = j.ajaxSetup({},
                        n),
                        a = i.context || i,
                        o = a !== i && (a.nodeType || a instanceof j) ? j(a) : j.event,
                        s = j.Deferred(),
                        l = j.Callbacks("once memory"),
                        f = i.statusCode || {},
                        d,
                        h = {},
                        g = {},
                        m,
                        v,
                        y,
                        b,
                        x,
                        w = 0,
                        T,
                        C,
                        N = {
                            readyState: 0,
                            setRequestHeader: function(e, t) {
                                if (!w) {
                                    var n = e.toLowerCase();
                                    e = g[n] = g[n] || e,
                                        h[e] = t
                                }
                                return this
                            },
                            getAllResponseHeaders: function() {
                                return w === 2 ? m: null
                            },
                            getResponseHeader: function(e) {
                                var n;
                                if (w === 2) {
                                    if (!v) {
                                        v = {};
                                        while (n = Xt.exec(m)) v[n[1].toLowerCase()] = n[2]
                                    }
                                    n = v[e.toLowerCase()]
                                }
                                return n === t ? null: n
                            },
                            overrideMimeType: function(e) {
                                w || (i.mimeType = e);
                                return this
                            },
                            abort: function(e) {
                                e = e || "abort",
                                y && y.abort(e),
                                    r(0, e);
                                return this
                            }
                        };
                    s.promise(N),
                        N.success = N.done,
                        N.error = N.fail,
                        N.complete = l.add,
                        N.statusCode = function(e) {
                            if (e) {
                                var t;
                                if (w < 2) for (t in e) f[t] = [f[t], e[t]];
                                else t = e[N.status],
                                    N.then(t, t)
                            }
                            return this
                        },
                        i.url = ((e || i.url) + "").replace($t, "").replace(Gt, sn[1] + "//"),
                        i.dataTypes = j.trim(i.dataType || "*").toLowerCase().split(Zt),
                    i.crossDomain == null && (x = tn.exec(i.url.toLowerCase()), i.crossDomain = !(!x || x[1] == sn[1] && x[2] == sn[2] && (x[3] || (x[1] === "http:" ? 80 : 443)) == (sn[3] || (sn[1] === "http:" ? 80 : 443)))),
                    i.data && i.processData && typeof i.data != "string" && (i.data = j.param(i.data, i.traditional)),
                        p(rn, i, n, N);
                    if (w === 2) return ! 1;
                    T = i.global,
                        i.type = i.type.toUpperCase(),
                        i.hasContent = !Ut.test(i.type),
                    T && j.active++===0 && j.event.trigger("ajaxStart");
                    if (!i.hasContent) {
                        i.data && (i.url += (Jt.test(i.url) ? "&": "?") + i.data, delete i.data),
                            d = i.url;
                        if (i.cache === !1) {
                            var E = j.now(),
                                k = i.url.replace(en, "$1_=" + E);
                            i.url = k + (k === i.url ? (Jt.test(i.url) ? "&": "?") + "_=" + E: "")
                        }
                    } (i.data && i.hasContent && i.contentType !== !1 || n.contentType) && N.setRequestHeader("Content-Type", i.contentType),
                    i.ifModified && (d = d || i.url, j.lastModified[d] && N.setRequestHeader("If-Modified-Since", j.lastModified[d]), j.etag[d] && N.setRequestHeader("If-None-Match", j.etag[d])),
                        N.setRequestHeader("Accept", i.dataTypes[0] && i.accepts[i.dataTypes[0]] ? i.accepts[i.dataTypes[0]] + (i.dataTypes[0] !== "*" ? ", " + ln + "; q=0.01": "") : i.accepts["*"]);
                    for (C in i.headers) N.setRequestHeader(C, i.headers[C]);
                    if (i.beforeSend && (i.beforeSend.call(a, N, i) === !1 || w === 2)) {
                        N.abort();
                        return ! 1
                    }
                    for (C in {
                        success: 1,
                        error: 1,
                        complete: 1
                    }) N[C](i[C]);
                    y = p(an, i, n, N);
                    if (!y) r( - 1, "No Transport");
                    else {
                        N.readyState = 1,
                        T && o.trigger("ajaxSend", [N, i]),
                        i.async && i.timeout > 0 && (b = setTimeout(function() {
                                N.abort("timeout")
                            },
                            i.timeout));
                        try {
                            w = 1,
                                y.send(h, r)
                        } catch(S) {
                            if (w < 2) r( - 1, S);
                            else throw S
                        }
                    }
                    return N
                },
                param: function(e, n) {
                    var r = [],
                        i = function(e, t) {
                            t = j.isFunction(t) ? t() : t,
                                r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)
                        };
                    n === t && (n = j.ajaxSettings.traditional);
                    if (j.isArray(e) || e.jquery && !j.isPlainObject(e)) j.each(e,
                        function() {
                            i(this.name, this.value)
                        });
                    else for (var a in e) f(a, e[a], n, i);
                    return r.join("&").replace(It, "+")
                }
            }),
            j.extend({
                active: 0,
                lastModified: {},
                etag: {}
            });
        var cn = j.now(),
            fn = /(\=)\?(&|$)|\?\?/i;
        j.ajaxSetup({
            jsonp: "callback",
            jsonpCallback: function() {
                return j.expando + "_" + cn++
            }
        }),
            j.ajaxPrefilter("json jsonp",
                function(t, n, r) {
                    var i = typeof t.data == "string" && /^application\/x\-www\-form\-urlencoded/.test(t.contentType);
                    if (t.dataTypes[0] === "jsonp" || t.jsonp !== !1 && (fn.test(t.url) || i && fn.test(t.data))) {
                        var a, o = t.jsonpCallback = j.isFunction(t.jsonpCallback) ? t.jsonpCallback() : t.jsonpCallback,
                            s = e[o],
                            l = t.url,
                            u = t.data,
                            c = "$1" + o + "$2";
                        t.jsonp !== !1 && (l = l.replace(fn, c), t.url === l && (i && (u = u.replace(fn, c)), t.data === u && (l += (/\?/.test(l) ? "&": "?") + t.jsonp + "=" + o))),
                            t.url = l,
                            t.data = u,
                            e[o] = function(e) {
                                a = [e]
                            },
                            r.always(function() {
                                e[o] = s,
                                a && j.isFunction(s) && e[o](a[0])
                            }),
                            t.converters["script json"] = function() {
                                a || j.error(o + " was not called");
                                return a[0]
                            },
                            t.dataTypes[0] = "json";
                        return "script"
                    }
                }),
            j.ajaxSetup({
                accepts: {
                    script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
                },
                contents: {
                    script: /javascript|ecmascript/
                },
                converters: {
                    "text script": function(e) {
                        j.globalEval(e);
                        return e
                    }
                }
            }),
            j.ajaxPrefilter("script",
                function(e) {
                    e.cache === t && (e.cache = !1),
                    e.crossDomain && (e.type = "GET", e.global = !1)
                }),
            j.ajaxTransport("script",
                function(e) {
                    if (e.crossDomain) {
                        var n, r = L.head || L.getElementsByTagName("head")[0] || L.documentElement;
                        return {
                            send: function(i, a) {
                                n = L.createElement("script"),
                                    n.async = "async",
                                e.scriptCharset && (n.charset = e.scriptCharset),
                                    n.src = e.url,
                                    n.onload = n.onreadystatechange = function(e, i) {
                                        if (i || !n.readyState || /loaded|complete/.test(n.readyState)) n.onload = n.onreadystatechange = null,
                                        r && n.parentNode && r.removeChild(n),
                                            n = t,
                                        i || a(200, "success")
                                    },
                                    r.insertBefore(n, r.firstChild)
                            },
                            abort: function() {
                                n && n.onload(0, 1)
                            }
                        }
                    }
                });
        var dn = e.ActiveXObject ?
                function() {
                    for (var e in hn) hn[e](0, 1)
                }: !1,
            pn = 0,
            hn;
        j.ajaxSettings.xhr = e.ActiveXObject ?
            function() {
                return ! this.isLocal && l() || s()
            }: l,
            function(e) {
                j.extend(j.support, {
                    ajax: !!e,
                    cors: !!e && "withCredentials" in e
                })
            } (j.ajaxSettings.xhr()),
        j.support.ajax && j.ajaxTransport(function(n) {
            if (!n.crossDomain || j.support.cors) {
                var r;
                return {
                    send: function(i, a) {
                        var o = n.xhr(),
                            s,
                            l;
                        n.username ? o.open(n.type, n.url, n.async, n.username, n.password) : o.open(n.type, n.url, n.async);
                        if (n.xhrFields) for (l in n.xhrFields) o[l] = n.xhrFields[l];
                        n.mimeType && o.overrideMimeType && o.overrideMimeType(n.mimeType),
                        !n.crossDomain && !i["X-Requested-With"] && (i["X-Requested-With"] = "XMLHttpRequest");
                        try {
                            for (l in i) o.setRequestHeader(l, i[l])
                        } catch(u) {}
                        o.send(n.hasContent && n.data || null),
                            r = function(e, i) {
                                var l, u, c, f, d;
                                try {
                                    if (r && (i || o.readyState === 4)) {
                                        r = t,
                                        s && (o.onreadystatechange = j.noop, dn && delete hn[s]);
                                        if (i) o.readyState !== 4 && o.abort();
                                        else {
                                            l = o.status,
                                                c = o.getAllResponseHeaders(),
                                                f = {},
                                                d = o.responseXML,
                                            d && d.documentElement && (f.xml = d);
                                            try {
                                                f.text = o.responseText
                                            } catch(e) {}
                                            try {
                                                u = o.statusText
                                            } catch(p) {
                                                u = ""
                                            } ! l && n.isLocal && !n.crossDomain ? l = f.text ? 200 : 404 : l === 1223 && (l = 204)
                                        }
                                    }
                                } catch(h) {
                                    i || a( - 1, h)
                                }
                                f && a(l, u, f, c)
                            },
                            !n.async || o.readyState === 4 ? r() : (s = ++pn, dn && (hn || (hn = {},
                                j(e).unload(dn)), hn[s] = r), o.onreadystatechange = r)
                    },
                    abort: function() {
                        r && r(0, 1)
                    }
                }
            }
        });
        var gn = {},
            mn, vn, yn = /^(?:toggle|show|hide)$/,
            bn = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
            xn, wn = [["height", "marginTop", "marginBottom", "paddingTop", "paddingBottom"], ["width", "marginLeft", "marginRight", "paddingLeft", "paddingRight"], ["opacity"]],
            Tn;
        j.fn.extend({
            show: function(e, t, n) {
                var a, o;
                if (e || e === 0) return this.animate(i("show", 3), e, t, n);
                for (var s = 0,
                         l = this.length; s < l; s++) a = this[s],
                a.style && (o = a.style.display, !j._data(a, "olddisplay") && o === "none" && (o = a.style.display = ""), (o === "" && j.css(a, "display") === "none" || !j.contains(a.ownerDocument.documentElement, a)) && j._data(a, "olddisplay", r(a.nodeName)));
                for (s = 0; s < l; s++) {
                    a = this[s];
                    if (a.style) {
                        o = a.style.display;
                        if (o === "" || o === "none") a.style.display = j._data(a, "olddisplay") || ""
                    }
                }
                return this
            },
            hide: function(e, t, n) {
                if (e || e === 0) return this.animate(i("hide", 3), e, t, n);
                var r, a, o = 0,
                    s = this.length;
                for (; o < s; o++) r = this[o],
                r.style && (a = j.css(r, "display"), a !== "none" && !j._data(r, "olddisplay") && j._data(r, "olddisplay", a));
                for (o = 0; o < s; o++) this[o].style && (this[o].style.display = "none");
                return this
            },
            _toggle: j.fn.toggle,
            toggle: function(e, t, n) {
                var r = typeof e == "boolean";
                j.isFunction(e) && j.isFunction(t) ? this._toggle.apply(this, arguments) : e == null || r ? this.each(function() {
                    var t = r ? e: j(this).is(":hidden");
                    j(this)[t ? "show": "hide"]()
                }) : this.animate(i("toggle", 3), e, t, n);
                return this
            },
            fadeTo: function(e, t, n, r) {
                return this.filter(":hidden").css("opacity", 0).show().end().animate({
                        opacity: t
                    },
                    e, n, r)
            },
            animate: function(e, t, n, i) {
                function a() {
                    o.queue === !1 && j._mark(this);
                    var t = j.extend({},
                        o),
                        n = this.nodeType === 1,
                        i = n && j(this).is(":hidden"),
                        a,
                        s,
                        l,
                        u,
                        c,
                        f,
                        d,
                        p,
                        h,
                        g,
                        m;
                    t.animatedProperties = {};
                    for (l in e) {
                        a = j.camelCase(l),
                        l !== a && (e[a] = e[l], delete e[l]);
                        if ((c = j.cssHooks[a]) && "expand" in c) {
                            f = c.expand(e[a]),
                                delete e[a];
                            for (l in f) l in e || (e[l] = f[l])
                        }
                    }
                    for (a in e) {
                        s = e[a],
                            j.isArray(s) ? (t.animatedProperties[a] = s[1], s = e[a] = s[0]) : t.animatedProperties[a] = t.specialEasing && t.specialEasing[a] || t.easing || "swing";
                        if (s === "hide" && i || s === "show" && !i) return t.complete.call(this);
                        n && (a === "height" || a === "width") && (t.overflow = [this.style.overflow, this.style.overflowX, this.style.overflowY], j.css(this, "display") === "inline" && j.css(this, "float") === "none" && (!j.support.inlineBlockNeedsLayout || r(this.nodeName) === "inline" ? this.style.display = "inline-block": this.style.zoom = 1))
                    }
                    t.overflow != null && (this.style.overflow = "hidden");
                    for (l in e) u = new j.fx(this, t, l),
                        s = e[l],
                        yn.test(s) ? (m = j._data(this, "toggle" + l) || (s === "toggle" ? i ? "show": "hide": 0), m ? (j._data(this, "toggle" + l, m === "show" ? "hide": "show"), u[m]()) : u[s]()) : (d = bn.exec(s), p = u.cur(), d ? (h = parseFloat(d[2]), g = d[3] || (j.cssNumber[l] ? "": "px"), g !== "px" && (j.style(this, l, (h || 1) + g), p = (h || 1) / u.cur() * p, j.style(this, l, p + g)), d[1] && (h = (d[1] === "-=" ? -1 : 1) * h + p), u.custom(p, h, g)) : u.custom(p, s, ""));
                    return ! 0
                }
                var o = j.speed(t, n, i);
                if (j.isEmptyObject(e)) return this.each(o.complete, [!1]);
                e = j.extend({},
                    e);
                return o.queue === !1 ? this.each(a) : this.queue(o.queue, a)
            },
            stop: function(e, n, r) {
                typeof e != "string" && (r = n, n = e, e = t),
                n && e !== !1 && this.queue(e || "fx", []);
                return this.each(function() {
                    function t(e, t, n) {
                        var i = t[n];
                        j.removeData(e, n, !0),
                            i.stop(r)
                    }
                    var n, i = !1,
                        a = j.timers,
                        o = j._data(this);
                    r || j._unmark(!0, this);
                    if (e == null) for (n in o) o[n] && o[n].stop && n.indexOf(".run") === n.length - 4 && t(this, o, n);
                    else o[n = e + ".run"] && o[n].stop && t(this, o, n);
                    for (n = a.length; n--;) a[n].elem === this && (e == null || a[n].queue === e) && (r ? a[n](!0) : a[n].saveState(), i = !0, a.splice(n, 1)); (!r || !i) && j.dequeue(this, e)
                })
            }
        }),
            j.each({
                    slideDown: i("show", 1),
                    slideUp: i("hide", 1),
                    slideToggle: i("toggle", 1),
                    fadeIn: {
                        opacity: "show"
                    },
                    fadeOut: {
                        opacity: "hide"
                    },
                    fadeToggle: {
                        opacity: "toggle"
                    }
                },
                function(e, t) {
                    j.fn[e] = function(e, n, r) {
                        return this.animate(t, e, n, r)
                    }
                }),
            j.extend({
                speed: function(e, t, n) {
                    var r = e && typeof e == "object" ? j.extend({},
                        e) : {
                        complete: n || !n && t || j.isFunction(e) && e,
                        duration: e,
                        easing: n && t || t && !j.isFunction(t) && t
                    };
                    r.duration = j.fx.off ? 0 : typeof r.duration == "number" ? r.duration: r.duration in j.fx.speeds ? j.fx.speeds[r.duration] : j.fx.speeds._default;
                    if (r.queue == null || r.queue === !0) r.queue = "fx";
                    r.old = r.complete,
                        r.complete = function(e) {
                            j.isFunction(r.old) && r.old.call(this),
                                r.queue ? j.dequeue(this, r.queue) : e !== !1 && j._unmark(this)
                        };
                    return r
                },
                easing: {
                    linear: function(e) {
                        return e
                    },
                    swing: function(e) {
                        return - Math.cos(e * Math.PI) / 2 + .5
                    }
                },
                timers: [],
                fx: function(e, t, n) {
                    this.options = t,
                        this.elem = e,
                        this.prop = n,
                        t.orig = t.orig || {}
                }
            }),
            j.fx.prototype = {
                update: function() {
                    this.options.step && this.options.step.call(this.elem, this.now, this),
                        (j.fx.step[this.prop] || j.fx.step._default)(this)
                },
                cur: function() {
                    if (this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null)) return this.elem[this.prop];
                    var e, t = j.css(this.elem, this.prop);
                    return isNaN(e = parseFloat(t)) ? !t || t === "auto" ? 0 : t: e
                },
                custom: function(e, n, r) {
                    function i(e) {
                        return a.step(e)
                    }
                    var a = this,
                        s = j.fx;
                    this.startTime = Tn || o(),
                        this.end = n,
                        this.now = this.start = e,
                        this.pos = this.state = 0,
                        this.unit = r || this.unit || (j.cssNumber[this.prop] ? "": "px"),
                        i.queue = this.options.queue,
                        i.elem = this.elem,
                        i.saveState = function() {
                            j._data(a.elem, "fxshow" + a.prop) === t && (a.options.hide ? j._data(a.elem, "fxshow" + a.prop, a.start) : a.options.show && j._data(a.elem, "fxshow" + a.prop, a.end))
                        },
                    i() && j.timers.push(i) && !xn && (xn = setInterval(s.tick, s.interval))
                },
                show: function() {
                    var e = j._data(this.elem, "fxshow" + this.prop);
                    this.options.orig[this.prop] = e || j.style(this.elem, this.prop),
                        this.options.show = !0,
                        e !== t ? this.custom(this.cur(), e) : this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur()),
                        j(this.elem).show()
                },
                hide: function() {
                    this.options.orig[this.prop] = j._data(this.elem, "fxshow" + this.prop) || j.style(this.elem, this.prop),
                        this.options.hide = !0,
                        this.custom(this.cur(), 0)
                },
                step: function(e) {
                    var t, n, r, i = Tn || o(),
                        a = !0,
                        s = this.elem,
                        l = this.options;
                    if (e || i >= l.duration + this.startTime) {
                        this.now = this.end,
                            this.pos = this.state = 1,
                            this.update(),
                            l.animatedProperties[this.prop] = !0;
                        for (t in l.animatedProperties) l.animatedProperties[t] !== !0 && (a = !1);
                        if (a) {
                            l.overflow != null && !j.support.shrinkWrapBlocks && j.each(["", "X", "Y"],
                                function(e, t) {
                                    s.style["overflow" + t] = l.overflow[e]
                                }),
                            l.hide && j(s).hide();
                            if (l.hide || l.show) for (t in l.animatedProperties) j.style(s, t, l.orig[t]),
                                j.removeData(s, "fxshow" + t, !0),
                                j.removeData(s, "toggle" + t, !0);
                            r = l.complete,
                            r && (l.complete = !1, r.call(s))
                        }
                        return ! 1
                    }
                    l.duration == Infinity ? this.now = i: (n = i - this.startTime, this.state = n / l.duration, this.pos = j.easing[l.animatedProperties[this.prop]](this.state, n, 0, 1, l.duration), this.now = this.start + (this.end - this.start) * this.pos),
                        this.update();
                    return ! 0
                }
            },
            j.extend(j.fx, {
                tick: function() {
                    var e, t = j.timers,
                        n = 0;
                    for (; n < t.length; n++) e = t[n],
                    !e() && t[n] === e && t.splice(n--, 1);
                    t.length || j.fx.stop()
                },
                interval: 13,
                stop: function() {
                    clearInterval(xn),
                        xn = null
                },
                speeds: {
                    slow: 600,
                    fast: 200,
                    _default: 400
                },
                step: {
                    opacity: function(e) {
                        j.style(e.elem, "opacity", e.now)
                    },
                    _default: function(e) {
                        e.elem.style && e.elem.style[e.prop] != null ? e.elem.style[e.prop] = e.now + e.unit: e.elem[e.prop] = e.now
                    }
                }
            }),
            j.each(wn.concat.apply([], wn),
                function(e, t) {
                    t.indexOf("margin") && (j.fx.step[t] = function(e) {
                        j.style(e.elem, t, Math.max(0, e.now) + e.unit)
                    })
                }),
        j.expr && j.expr.filters && (j.expr.filters.animated = function(e) {
            return j.grep(j.timers,
                function(t) {
                    return e === t.elem
                }).length
        });
        var Cn, Nn = /^t(?:able|d|h)$/i,
            En = /^(?:body|html)$/i;
        "getBoundingClientRect" in L.documentElement ? Cn = function(e, t, r, i) {
            try {
                i = e.getBoundingClientRect()
            } catch(a) {}
            if (!i || !j.contains(r, e)) return i ? {
                top: i.top,
                left: i.left
            }: {
                top: 0,
                left: 0
            };
            var o = t.body,
                s = n(t),
                l = r.clientTop || o.clientTop || 0,
                u = r.clientLeft || o.clientLeft || 0,
                c = s.pageYOffset || j.support.boxModel && r.scrollTop || o.scrollTop,
                f = s.pageXOffset || j.support.boxModel && r.scrollLeft || o.scrollLeft,
                d = i.top + c - l,
                p = i.left + f - u;
            return {
                top: d,
                left: p
            }
        }: Cn = function(e, t, n) {
            var r, i = e.offsetParent,
                a = e,
                o = t.body,
                s = t.defaultView,
                l = s ? s.getComputedStyle(e, null) : e.currentStyle,
                u = e.offsetTop,
                c = e.offsetLeft;
            while ((e = e.parentNode) && e !== o && e !== n) {
                if (j.support.fixedPosition && l.position === "fixed") break;
                r = s ? s.getComputedStyle(e, null) : e.currentStyle,
                    u -= e.scrollTop,
                    c -= e.scrollLeft,
                e === i && (u += e.offsetTop, c += e.offsetLeft, j.support.doesNotAddBorder && (!j.support.doesAddBorderForTableAndCells || !Nn.test(e.nodeName)) && (u += parseFloat(r.borderTopWidth) || 0, c += parseFloat(r.borderLeftWidth) || 0), a = i, i = e.offsetParent),
                j.support.subtractsBorderForOverflowNotVisible && r.overflow !== "visible" && (u += parseFloat(r.borderTopWidth) || 0, c += parseFloat(r.borderLeftWidth) || 0),
                    l = r
            }
            if (l.position === "relative" || l.position === "static") u += o.offsetTop,
                c += o.offsetLeft;
            j.support.fixedPosition && l.position === "fixed" && (u += Math.max(n.scrollTop, o.scrollTop), c += Math.max(n.scrollLeft, o.scrollLeft));
            return {
                top: u,
                left: c
            }
        },
            j.fn.offset = function(e) {
                if (arguments.length) return e === t ? this: this.each(function(t) {
                    j.offset.setOffset(this, e, t)
                });
                var n = this[0],
                    r = n && n.ownerDocument;
                if (!r) return null;
                if (n === r.body) return j.offset.bodyOffset(n);
                return Cn(n, r, r.documentElement)
            },
            j.offset = {
                bodyOffset: function(e) {
                    var t = e.offsetTop,
                        n = e.offsetLeft;
                    j.support.doesNotIncludeMarginInBodyOffset && (t += parseFloat(j.css(e, "marginTop")) || 0, n += parseFloat(j.css(e, "marginLeft")) || 0);
                    return {
                        top: t,
                        left: n
                    }
                },
                setOffset: function(e, t, n) {
                    var r = j.css(e, "position");
                    r === "static" && (e.style.position = "relative");
                    var i = j(e),
                        a = i.offset(),
                        o = j.css(e, "top"),
                        s = j.css(e, "left"),
                        l = (r === "absolute" || r === "fixed") && j.inArray("auto", [o, s]) > -1,
                        u = {},
                        c = {},
                        f,
                        d;
                    l ? (c = i.position(), f = c.top, d = c.left) : (f = parseFloat(o) || 0, d = parseFloat(s) || 0),
                    j.isFunction(t) && (t = t.call(e, n, a)),
                    t.top != null && (u.top = t.top - a.top + f),
                    t.left != null && (u.left = t.left - a.left + d),
                        "using" in t ? t.using.call(e, u) : i.css(u)
                }
            },
            j.fn.extend({
                position: function() {
                    if (!this[0]) return null;
                    var e = this[0],
                        t = this.offsetParent(),
                        n = this.offset(),
                        r = En.test(t[0].nodeName) ? {
                            top: 0,
                            left: 0
                        }: t.offset();
                    n.top -= parseFloat(j.css(e, "marginTop")) || 0,
                        n.left -= parseFloat(j.css(e, "marginLeft")) || 0,
                        r.top += parseFloat(j.css(t[0], "borderTopWidth")) || 0,
                        r.left += parseFloat(j.css(t[0], "borderLeftWidth")) || 0;
                    return {
                        top: n.top - r.top,
                        left: n.left - r.left
                    }
                },
                offsetParent: function() {
                    return this.map(function() {
                        var e = this.offsetParent || L.body;
                        while (e && !En.test(e.nodeName) && j.css(e, "position") === "static") e = e.offsetParent;
                        return e
                    })
                }
            }),
            j.each({
                    scrollLeft: "pageXOffset",
                    scrollTop: "pageYOffset"
                },
                function(e, r) {
                    var i = /Y/.test(r);
                    j.fn[e] = function(a) {
                        return j.access(this,
                            function(e, a, o) {
                                var s = n(e);
                                if (o === t) return s ? r in s ? s[r] : j.support.boxModel && s.document.documentElement[a] || s.document.body[a] : e[a];
                                s ? s.scrollTo(i ? j(s).scrollLeft() : o, i ? o: j(s).scrollTop()) : e[a] = o
                            },
                            e, a, arguments.length, null)
                    }
                }),
            j.each({
                    Height: "height",
                    Width: "width"
                },
                function(e, n) {
                    var r = "client" + e,
                        i = "scroll" + e,
                        a = "offset" + e;
                    j.fn["inner" + e] = function() {
                        var e = this[0];
                        return e ? e.style ? parseFloat(j.css(e, n, "padding")) : this[n]() : null
                    },
                        j.fn["outer" + e] = function(e) {
                            var t = this[0];
                            return t ? t.style ? parseFloat(j.css(t, n, e ? "margin": "border")) : this[n]() : null
                        },
                        j.fn[n] = function(e) {
                            return j.access(this,
                                function(e, n, o) {
                                    var s, l, u, c;
                                    if (j.isWindow(e)) {
                                        s = e.document,
                                            l = s.documentElement[r];
                                        return j.support.boxModel && l || s.body && s.body[r] || l
                                    }
                                    if (e.nodeType === 9) {
                                        s = e.documentElement;
                                        if (s[r] >= s[i]) return s[r];
                                        return Math.max(e.body[i], s[i], e.body[a], s[a])
                                    }
                                    if (o === t) {
                                        u = j.css(e, n),
                                            c = parseFloat(u);
                                        return j.isNumeric(c) ? c: u
                                    }
                                    j(e).css(n, o)
                                },
                                n, e, arguments.length, null)
                        }
                }),
            e.jQuery = e.$ = j,
        typeof define == "function" && define.amd && define.amd.jQuery && define("jquery", [],
            function() {
                return j
            })
    } (window);
var ntesQuote = {
    formatString: function(e) {},
    widthString: function(e, t) {},
    ready: function(e) {},
    importJs: function(e, t, n) {},
    get: function(e) {},
    find: function(e) {},
    getParameter: function(e) {},
    trim: function(e) {},
    isIE: false,
    cssColor: function(e) {},
    jcron: {},
    cronCache: {},
    intervalCache: {},
    setCrontab: function(e, t) {},
    quoteMark: "_ntesquote_",
    minorMark: "_minorquote_",
    cRed: "cRed",
    cGreen: "cGreen",
    cBlack: "",
    address: "http://api.money.126.net/data/feed/",
    timer: null,
    timeout: 1e4,
    inited: false,
    refreshed: false,
    _loadCount: 0,
    _codes: null,
    _codeMap: {},
    _quoteMap: {},
    _preQuoteMap: {},
    _elemsMap: {},
    _typeTimeMap: {},
    _fillElems: function(e) {},
    beforeDataParsing: function() {},
    afterDataParsing: function() {},
    beforePageRending: function() {},
    afterPageRending: function() {},
    beforePageRendingEvents: [],
    afterPageRendingEvents: [],
    toMeta: function(e) {},
    defaultFormat: function(e, t, n, r) {},
    _beforeHandler: {},
    addBeforeHandler: function(e, t) {},
    _formatHandler: {},
    addFormatHandler: function(e, t) {},
    _afterHandler: {},
    addAfterHandler: function(e, t) {},
    getCodes: function() {},
    getQuoteCodes: function(e) {},
    eachCode: function(e) {},
    eachQuote: function(e) {},
    eachElement: function(e) {},
    getQuote: function(e) {},
    getPreQuote: function(e) {},
    remove: function(e) {},
    init: function(e) {},
    receiveQuote: function(e) {},
    refresh: function(e) {},
    loadOnce: function(e) {},
    loadData: function() {},
    version: 1
}; !
    function(e) {
        e.formatString = function(e) {
            for (var t = 1; t < arguments.length; t++) {
                e = e.replace(new RegExp("\\{" + (t - 1) + "\\}", "gm"), arguments[t])
            }
            return e
        };
        e.widthString = function(e, t) {
            if (!e) return e;
            var n = t * 2,
                r = 0,
                i = 0;
            for (; i < e.length; i++) {
                var a = e.charCodeAt(i) > 0 && e.charCodeAt(i) < 255 ? 1 : 2;
                if (r + a > n) {
                    break
                }
                r += a
            }
            return e.substr(0, i)
        };
        e.ready = function(e) {
            if (/(?!.*?compatible|.*?webkit)^mozilla|opera/i.test(navigator.userAgent)) {
                document.addEventListener("DOMContentLoaded", e, false)
            } else {
                window.setTimeout(e, 0)
            }
        };
        e.importJs = function(e, t, n, r) {
            var i = document.getElementsByTagName("head")[0] || document.documentElement;
            var a = document.createElement("script");
            a.type = "text/javascript";
            if (t) {
                a.setAttribute("charset", t)
            }
            var o = false;
            a.onload = a.onreadystatechange = function() {
                if (!o && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
                    o = true;
                    if (typeof n == "function") {
                        try {
                            n(r)
                        } catch(e) {
                            log(e)
                        }
                    }
                    i.removeChild(this)
                }
            };
            a.src = e;
            i.insertBefore(a, i.firstChild)
        };
        e.get = function(e) {
            return typeof e == "string" ? document.getElementById(e) : e
        };
        e.find = function(t) {
            var n = t.css,
                r = t.attr,
                i = t.attrValue,
                a = [];
            var o = e.get(t.parent).getElementsByTagName(t.tag || "*");
            var s = new RegExp("(^|\\s)" + n + "(\\s|$)");
            for (var l = 0; l < o.length; l++) {
                var u = o[l];
                if (n && u.className != n && !u.className.match(s)) continue;
                if (r && !i && !u.getAttribute(r)) continue;
                if (r && i && u.getAttribute(r) != i) continue;
                a.push(u)
            }
            return a
        };
        e.getParameter = function(e) {
            var t = new RegExp("(^|)" + e + "=([^&]*)(&|$)", "gi").exec(location.href);
            return t ? unescape(t[2]) : null
        };
        e.trim = function(e) {
            return e.replace(/(^\s*)|(\s*$)/g, "")
        };
        e.isArray = function(e) {
            return Object.prototype.toString.call(e) === "[object Array]"
        };
        e.isIE = function() {
            var e = navigator.userAgent.toLowerCase();
            return /msie/.test(e) && !/opera/.test(e)
        } ();
        e.cssColor = function(t) {
            return t > 0 ? e.cRed: t < 0 ? e.cGreen: ""
        };
        e.init = function(t) {
            window._ntes_quote_callback = function(t) {
                if (e.beforeDataParsing) {
                    e.beforeDataParsing(t)
                }
                e.receiveQuote(t);
                if (e.afterDataParsing) {
                    e.afterDataParsing(t)
                }
                if (e.beforePageRending) {
                    e.beforePageRending()
                }
                for (var n = 0; n < e.beforePageRendingEvents.length; n++) {
                    e.beforePageRendingEvents[n]()
                }
                e.defaultPageRender();
                for (var n = 0; n < e.afterPageRendingEvents.length; n++) {
                    e.afterPageRendingEvents[n]()
                }
                if (e.afterPageRending) {
                    e.afterPageRending()
                }
            };
            t = t || {};
            e.timeout = t["timeout"] || e.timeout;
            e.defaultCode = t["defaultCode"];
            e.quoteMark = t["quoteMark"] || e.quoteMark;
            e.beforeDataParsing = t["beforeDataParsing"] || null;
            e.afterDataParsing = t["afterDataParsing"] || null;
            e.beforePageRending = t["beforePageRending"] || null;
            e.afterPageRending = t["afterPageRending"] || null;
            e.inited = true;
            return e
        };
        e.refresh = function(t) {
            e.refreshed = true;
            e._fillElems(t);
            e._loadCount = 0;
            return e
        };
        e._fillElems = function(t) {
            var n = [];
            var r = e.find({
                parent: t || document.body,
                attr: e.quoteMark
            });
            for (var i = 0; i < r.length; i++) {
                var a = r[i];
                var o = e.toMeta(a.getAttribute(e.quoteMark));
                var s = o["code"] || e.defaultCode;
                var l = o["attr"] || "";
                if (!s) continue;
                e._codeMap[s] = true;
                n[n.length] = s;
                a["meta"] = o;
                var u = e._elemsMap[s] || (e._elemsMap[s] = {});
                if (u[l]) {
                    if (u[l].constructor != Array) {
                        var c = u[l];
                        u[l] = [c]
                    }
                    u[l].push(a)
                } else {
                    u[l] = a
                }
            }
            e._codes = null;
            return n
        };
        e.toMeta = function(e) {
            var t = e.split(/[:;]/);
            var n = {};
            for (var r = 0; r < t.length; r += 2) {
                n[t[r]] = t[r + 1]
            }
            return n
        };
        e.receiveQuote = function(t) {
            for (var n in t) {
                if (e._quoteMap[n]) {
                    e._preQuoteMap[n] = e._quoteMap[n]
                }
                e._quoteMap[n] = t[n]
            }
        };
        e.addBeforeHandler = function(t, n) {
            e._beforeHandler[t] = n
        };
        e.addFormatHandler = function(t, n) {
            e._formatHandler[t] = n
        };
        e.addAfterHandler = function(t, n) {
            e._afterHandler[t] = n
        };
        e.getCodes = function() {
            if (!e._codes) {
                e._codes = [];
                for (var t in e._codeMap) {
                    e._codes.push(t)
                }
            }
            return e._codes
        };
        e.getQuoteCodes = function(t) {
            var n = [];
            if (t) {
                e.eachQuote(function(e, r) {
                    if (r.type && r.type == t) {
                        n.push(e)
                    }
                })
            } else {
                e.eachQuote(function(e, t) {
                    n.push(e)
                })
            }
            return n
        };
        e.eachCode = function(t) {
            for (var n in e._codeMap) {
                if (e._codeMap[n]) {
                    t(n)
                }
            }
        };
        e.eachQuote = function(t) {
            for (var n in e._quoteMap) {
                t(n, e._quoteMap[n])
            }
        };
        e.eachElement = function(t) {
            for (var n in e._elemsMap) {
                var r = e._elemsMap[n];
                var i = e._quoteMap[n];
                for (var a in r) {
                    var o = r[a];
                    if (o.constructor != Array) {
                        t(n, o["meta"], o, i)
                    } else {
                        for (var s = 0; s < o.length; s++) {
                            t(n, o[s]["meta"], o[s], i)
                        }
                    }
                }
            }
        };
        e.getQuote = function(t) {
            return e._quoteMap[t]
        };
        e.getPreQuote = function(t) {
            return e._preQuoteMap[t]
        };
        e.remove = function(t) {
            if (typeof t == "string") {
                t = [t]
            }
            var n = 0;
            for (var r = 0; r < t.length; r++) {
                var i = t[r];
                if (!e._codeMap[i]) continue;
                delete e._codeMap[i];
                delete e._quoteMap[i];
                delete e._preQuoteMap[i];
                delete e._elemsMap[i];
                e._codes = null;
                n++
            }
            return n
        };
        e.defaultPageRender = function() {
            e.eachElement(function(t, n, r, i) {
                e.defaultElementRender(t, n, r, i)
            })
        };
        e.defaultElementRender = function(t, n, r, i) {
            try {
                var a = n["before"];
                if (a && e._beforeHandler[a]) {
                    e._beforeHandler[a](t, n, r, i)
                }
                var o = n["fmt"]; (e._formatHandler[o] || e.defaultFormat)(t, n, r, i);
                var s = n["after"];
                if (s && e._afterHandler[s]) {
                    e._afterHandler[s](t, n, r, i)
                }
            } catch(l) {
                if (typeof console != "undefined" && console.error) {
                    console.error(l)
                }
            }
        };
        var t = new RegExp("\\b(cRed)\\b|\\b(cGreen)\\b", "g");
        var n = new RegExp("\\b(upbg)\\b|\\b(downbg)\\b", "g");
        e.defaultFormat = function(r, i, a, o) {
            if (!o) {
                a.innerHTML = "--";
                return
            }
            var s = i["attr"];
            if (!s) return;
            var l = o[s];
            var u;
            if (l != 0 && !l) {
                if (i["default"]) {
                    u = i["default"]
                }
            } else {
                if (i["*"]) {
                    l = l * i["*"]
                }
                if (i["/"]) {
                    l = l / i["/"]
                }
                if (i["fixed"]) {
                    if (isFinite(l)) {
                        if (l * 1 < 1) i["fixed"] = i["fixed"] < 2 ? 2 : i["fixed"];
                        u = (l * 1).toFixed(i["fixed"])
                    } else {
                        u = "-"
                    }
                } else if (i["percent"]) {
                    u = (l * 100).toFixed(i["percent"]) + "%"
                } else {
                    u = l
                }
            }
            if (i["color"]) {
                var c = o[i["color"]];
                if (c) {
                    var f = e.cssColor(c);
                    a.className = a.className.replace(t, "") + " " + f
                }
            }
            if (i["colorcmp"]) {
                var d = U.getMapValue(o, i["colorcmp"]);
                if (d) {
                    var f = cssColor(l - d);
                    a.className = a.className.replace(ntesQuoteData.colorExp, "") + " " + f
                }
            }
            if (i["bgchg"]) {
                var p = ntesQuote.getPreQuote(r);
                if (p) {
                    var s = i["bgchg"];
                    var h = o[s];
                    var g = p[s];
                    if (h && g) {
                        a.className = a.className.replace(n, "") + " " + (h > g ? "upbg": h < g ? "downbg": "\u3000");
                        var m = (i["timeout"] || 1500) * 1;
                        window.setTimeout(function() {
                                a.className = a.className.replace(n, "")
                            },
                            m)
                    }
                }
            }
            if (i["maxlen"]) {
                a.setAttribute("title", u);
                u = e.widthString(u, i["maxlen"])
            }
            if (i["title"]) {
                a.setAttribute("title", o[i["title"]])
            }
            if (i["link"]) {
                var v = i["sign"] || "";
                var y = decodeURIComponent(e.formatString(i["link"], o[i["linkvalue"]]));
                u = e.formatString('<a href="{0}' + v + '" target="{1}">{2}</a>', y, i["target"], u)
            }
            a.innerHTML = u ? u: u === 0 ? 0 : "--"
        };
        e.loadAll = function(t) {
            var n = [];
            if (e.isArray(t)) {
                for (var r = 0; r < t.length; r++) n = n.concat(e._fillElems(t[r]))
            } else {
                n = n.concat(e._fillElems(t))
            }
            e.loadOnce(n)
        };
        e.loadOnce = function(t) {
            if (!e.inited) {
                e.init();
                e._fillElems()
            }
            var n = t || e.getCodes();
            if (n.length == 0) return;
            var r = [];
            var i = new Date;
            for (var a = 0; a < n.length; a++) {
                var o = n[a],
                    s = e._quoteMap[o];
                if (!s || !s["type"] || !e.cronCache[s["type"]] && !e.intervalCache[s["type"]]) {
                    r.push(o)
                } else {
                    var l = e.cronCache[s["type"]];
                    var u = e.intervalCache[s["type"]];
                    if (e.jcron.isMatch(i, s["type"], l) && e.isMatchInterval(i, e._typeTimeMap[s["type"]], u)) {
                        r.push(o);
                        e._typeTimeMap[s["type"]] = i
                    }
                }
            }
            if (r.length == 0) return;
            var c = i.getDay() + "" + i.getHours() + "" + i.getMinutes();
            if (r.length < 200 || !e.isIE) {
                e.importJs(e.address + r.join(",") + ",money.api?" + c, "utf-8")
            } else {
                for (var a = 0; a < r.length; a += 200) {
                    e.importJs(e.address + r.slice(a, a + 200).join(",") + ",money.api?" + c, "utf-8")
                }
            }
            e._loadCount++;
            return e
        };
        e.loadData = function(t) {
            if (t) e.timeout = t * 1;
            if (e.timer) {
                window.clearTimeout(e.timer);
                e.timer = null
            }
            var n = (new Date).getHours();
            if (n >= 9 && n <= 12 || n >= 13 && n <= 16 || e._loadCount == 0) {
                e.loadOnce()
            }
            e.timer = window.setTimeout(function() {
                    e.loadData()
                },
                e.timeout);
            return e
        };
        e.setCrontab = function(t, n) {
            if (!n && e.cronCache[t]) {
                delete e.cronCache[t];
                return true
            }
            try {
                var r = e.jcron.parseCrontab(t, n);
                if (!r.minute || !r.hour || !r.week) {
                    return false
                } else {
                    e.cronCache[t] = n;
                    return true
                }
            } catch(i) {
                return false
            }
        };
        e.setInterval = function(t, n) {
            if (!n && e.intervalCache[t]) {
                delete e.intervalCache[t];
                return true
            }
            e.intervalCache[t] = n;
            return true
        };
        e.isMatchInterval = function(e, t, n) {
            if (t && n) {
                if (e.getTime() - t.getTime() < n * 1e3) {
                    return false
                }
            }
            return true
        }
    } (ntesQuote); !
    function(e) {
        e.cache = {};
        function t(e, t, n, r, i) {
            var a = {};
            if (e.indexOf("/") != -1) {
                var o = parseInt(e.split("/")[1]);
                ntesQuote.setInterval(r, o * i);
                return null
            }
            var s = e.split(",");
            for (var l = 0; l < s.length; l++) {
                var u = null,
                    c = null,
                    o = null;
                var f = s[l].split(/-|\//g);
                if (f[0] == "*") {
                    u = t;
                    c = n;
                    if (f.length > 1 && isNaN(f[1])) return null;
                    o = f.length > 1 ? f[1] * 1 : 1
                } else {
                    if (isNaN(f[0])) return null;
                    u = f[0] * 1;
                    if (f.length > 1 && isNaN(f[1])) return null;
                    c = f.length > 1 ? f[1] * 1 : u;
                    if (f.length > 2 && isNaN(f[2])) return null;
                    o = f.length > 2 ? f[2] * 1 : 1
                }
                for (var d = u; d <= c; d += o) {
                    if (a[d]) continue;
                    a[d] = true
                }
            }
            return a
        }
        e.parseCrontab = function(n, r) {
            if (e.cache[r]) return e.cache[r];
            var i = r.split(/[ \t]+/g);
            e.cache[r] = {
                second: i.length > 0 ? t(i[0], 0, 59, n, 1) : null,
                minute: i.length > 0 ? t(i[1], 0, 59, n, 60) : null,
                hour: i.length > 1 ? t(i[2], 0, 23, n, 60 * 60) : null,
                week: i.length > 2 ? t(i[3], 0, 6, n, 60 * 60 * 24) : null
            };
            return e.cache[r]
        };
        e.isMatch = function(t, n, r) {
            if (r) {
                var i = e.parseCrontab(n, r);
                if (i.week && !i.week[t.getDay()]) {
                    return false
                } else if (i.hour && !i.hour[t.getHours()]) {
                    return false
                } else if (i.minute && !i.minute[t.getMinutes()]) {
                    return false
                }
            }
            return true
        }
    } (ntesQuote.jcron);
ntesQuote.setCrontab("SH", "* * 9-11,13-15 1-5");
ntesQuote.setCrontab("SZ", "* * 9-11,13-15 1-5");
ntesQuote.setCrontab("RANK", "* * 9-11,13-15 1-5");
ntesQuote.setCrontab("FU", "* * 9-11,13-15 1-5");
ntesQuote.setCrontab("HK", "* * 10-11,13-16 1-5");
ntesQuote.setCrontab("US", "*/10 * 21-23,0-5 1-6");
ntesQuote.setCrontab("FG", "* */15 * *");
ntesQuote.setCrontab("USUD", "* */2 21-23,0-5 1-6");
ntesQuote.addBeforeHandler("decode",
    function(e, t, n, r) {
        if (!r) return;
        var i = t["attr"];
        if (!i) return;
        var a = r[i];
        if (!a) return;
        r[i] = decodeURIComponent(a)
    });
ntesQuote.addBeforeHandler("arrow",
    function(e, t, n, r) {
        if (!r) return;
        var i = t["attr"];
        if (!i) return;
        var a = t["_arrowby"];
        if (!a) return;
        var o = r[a];
        if (!o) return;
        r[i] = o > 0 ? "\u2191": o < 0 ? "\u2193": "\u3000"
    });
ntesQuote.addFormatHandler("hstrend",
    function(e, t, n, r) {
        if (!r) return;
        var i = ntesQuote.getPreQuote(e);
        if (!i) return;
        var a = t["_arrowby"];
        if (!a) return;
        var o = r[a];
        if (!o) return;
        var s = i[a];
        if (!s) return;
        n.innerHTML = o > s ? "\u2191": o < s ? "\u2193": "\u3000";
        n.className = ntesQuote.cssColor(o - s);
        var l = (t["timeout"] || 1500) * 1;
        window.setTimeout(function() {
                n.innerHTML = "\u3000";
                n.className = ""
            },
            l)
    });
ntesQuote.addFormatHandler("table",
    function(e, t, n, r) {
        if (!r) return;
        var i = ntesQuote.find({
            parent: n,
            tag: "th",
            attr: ntesQuote.minorMark
        });
        if (!i || i.length == 0) return;
        var a = [];
        for (var o = 0; o < i.length; o++) {
            var s = ntesQuote.toMeta(i[o].getAttribute(ntesQuote.minorMark));
            if (s["link"]) {
                s["sign"] = t["sign"] || ""
            }
            a.push(s)
        }
        var l = n.getElementsByTagName("tbody")[0];
        var u = ntesQuote.find({
            parent: l,
            tag: "tr"
        });
        for (var o = 0; o < u.length && o < r.list.length; o++) {
            var c = r.list[o];
            for (var f = 0; f < a.length; f++) {
                ntesQuote.defaultElementRender(null, a[f], u[o].cells[f], c)
            }
        }
    });
ntesQuote.addFormatHandler("time",
    function(e, t, n, r) {
        if (!r) return;
        var i = t["attr"];
        if (!i) return;
        var a = r[i];
        if (!a) return;
        var o = new Date(a);
        var s = t["timefmt"];
        var l = s.replace("yyyy", o.getFullYear()).replace("MM", o.getMonth() + 1).replace("dd", o.getDate()).replace("HH", o.getHours()).replace("mm", o.getMinutes()).replace("ss", o.getSeconds());
        n.innerHTML = l
    });
ntesQuote.addFormatHandler("rankmainpage",
    function(e, t, n, r) {
        if (!r) return;
        var i = ntesQuote.find({
            parent: n,
            tag: "th",
            attr: ntesQuote.minorMark
        });
        if (!i || i.length == 0) return;
        var a = [];
        for (var o = 0; o < i.length; o++) {
            var s = ntesQuote.toMeta(i[o].getAttribute(ntesQuote.minorMark));
            a.push(s)
        }
        var l = n.getElementsByTagName("tbody")[0];
        var u = ntesQuote.find({
            parent: l,
            tag: "tr"
        });
        var c = r["list"] || r["LIST"];
        for (var o = 0; o < u.length && o < c.length; o++) {
            var f = c[o];
            for (var d = 0; d < a.length; d++) {
                if (a[d]["attr"] == "none") continue;
                ntesQuote.defaultElementRender(null, a[d], u[o].cells[d], f)
            }
            if (f["uvsnews"] && f["uvsnews"].length > 0) {
                url = f["uvsnews"][0]["url"];
                title = f["uvsnews"][0]["title"];
                if (url) {
                    var p = u[o].cells[1].innerHTML;
                    p = ntesQuote.formatString("<div>{0}<a target='_blank' href='{1}' title='{2}' class='stock-news'></a></div>", p, url, title);
                    u[o].cells[1].innerHTML = p
                }
            } else if (f["announmt"] && f["announmt"].length > 0) {
                announmtid = f["announmt"][0]["announmtid"];
                announmt2 = f["announmt"][0]["announmt2"];
                if (announmtid) {
                    var p = u[o].cells[1].innerHTML;
                    p = ntesQuote.formatString('<div>{0}<a target="_blank" href="http://quotes.money.163.com/f10/ggnr_{1},{2}.html" title="{3}" class="stock-notice"></a></div>', p, f["symbol"], announmtid, announmt2);
                    u[o].cells[1].innerHTML = p
                }
            }
        }
    }); !
    function(e) {
        var t = e("#tabs_head"),
            n = e("#tabs_panel");
        var r = function() {
            this.currentTab = "main_index";
            this.singleHeight = 0
        };
        r.prototype = {
            timer: null,
            interval: 3e3,
            isSetHeight: false,
            init: function() {
                this.singleHeight = n.find("li").height();
                this.showCurrent();
                this.eventHandle()
            },
            setHeight: function(t) {
                var n;
                for (n in t) {
                    e("#" + n).height(t[n])
                }
                this.isSetHeight = true;
                this.init()
            },
            showCurrent: function(r) {
                if (r) {
                    t.find(".current").removeClass("current");
                    r.addClass("current")
                }
                n.find(".panel").hide();
                this.scrollViewControl("stop");
                this.scrollViewControl("begin", e("#" + this.currentTab))
            },
            scrollViewControl: function(e, t) {
                if (e == "begin" && t) {
                    t.show();
                    this.scrollViewBegin(t)
                } else if (e == "stop") {
                    this.scrollViewStop()
                }
            },
            scrollViewBegin: function(e) {
                var t = this;
                this.timer = setInterval(function() {
                        t.scrollView(e)
                    },
                    this.interval)
            },
            scrollViewStop: function() {
                clearInterval(this.timer)
            },
            scrollView: function(e) {
                var t = e.data("scorllData");
                if (!t || !t.init) {
                    t = this.scrollViewInit(e)
                }
                if (t.step == 1) {
                    return
                }
                if (t.currentStep < t.step) {
                    e.animate({
                            top: -t.currentStep * this.singleHeight + "px"
                        },
                        500);
                    t.currentStep++
                } else {
                    e.animate({
                            top: -t.currentStep * this.singleHeight + "px"
                        },
                        500,
                        function() {
                            e.css("top", 0);
                            t.currentStep = 1
                        })
                }
                e.data("scorllData", t)
            },
            scrollViewInit: function(e) {
                var t = {},
                    n = e.height(),
                    r = Math.round(n / this.singleHeight),
                    i = e.find("ul"),
                    a = null;
                t = {
                    step: r,
                    currentStep: 1,
                    init: true
                };
                if (i.length == 1 && r != 1) {
                    a = i.clone();
                    e.append(a)
                }
                e.data("scorllData", t);
                return t
            },
            eventHandle: function() {
                var n = this;
                t.on("click", "a",
                    function(t) {
                        var r = e(this);
                        n.currentTab = r.attr("href").slice(1);
                        n.showCurrent(r);
                        return false
                    })
            }
        };
        var i = new r;
        ntesQuote.addAfterHandler("arrow",
            function(e, t, n, r) {
                if (r.percent > 0) {
                    direct = "up"
                } else if (r.percent < 0) {
                    direct = "down"
                }
                n.innerHTML += '<span class="arrow ' + direct + '"></span>'
            });
        ntesQuote.loadData();
        ntesQuote.init({
            afterPageRending: function() {
                if (!i.isSetHeight) {
                    var t = {};
                    n.find(".panel").each(function() {
                        var n = e(this).attr("id"),
                            r = e(this).height();
                        t[n] = r
                    });
                    i.setHeight(t)
                }
            }
        })
    } (jQuery);